我有一个build.gradle
脚本,其中包括几个任务,最后一个任务如下。最后一个任务将创建一个zip文件,现在我需要将其复制到具有不同zip文件名的目标目录中。我尝试了几个函数来实现这一点,但由于不同类型的错误,构建失败了。
build.gradle
:中的任务
task createDBDeploy(type: Zip, dependsOn: 'copyToDbfiles') {
System.out.println("Starts createDBDeploy");
includeEmptyDirs = false
zip64 true
archiveName = "dbfiles.zip"
destinationDir = file("${buildDir}")
System.out.println("Destination directory :${buildDir}");
from "${buildDir}/dbfiles"
}
在我运行了上面的任务之后,我需要运行下面的任务。我需要将上述文件dbfiles.zip
复制到目标目录"${buildDir}"
中,其名称不同,分别为abc.zip
、def.zip
、feg.zip
、ijk.zip
。你能帮我完成上面的任务吗?
我尝试使用doLast
和finalizedBy
函数,但我的Jenkins构建失败了。因此,我不确定在创建构建后如何执行上述任务。
我尝试了以下方式或方法:
第一种方法:在gradle.build
中添加了以下任务,并运行了jenkins作业,但构建失败。
task copyFiles(type: Copy) {
from file("$buildDir/dbfiles.zip")
into file("$buildDir/abc.zip")
from file("$buildDir/dbfiles.zip")
into file("$buildDir/def.zip")
from file("$buildDir/dbfiles.zip")
into file("$buildDir/feg.zip")
from file("$buildDir/dbfiles.zip")
into file("$buildDir/ijk.zip")
}
build.dependsOn copyFiles
第二种方法:在gradle.build中添加了以下任务,并运行了jenkins作业,但构建失败。
task renameArtifacts(type: Copy) {
from ('$buildDir/') include 'dbfiles.zip'
destinationDir file('$buildDir/abc.zip')
from ('$buildDir/') include 'dbfiles.zip'
destinationDir file('$buildDir/def.zip')
from ('$buildDir/') include 'dbfiles.zip'
destinationDir file('$buildDir/feg.zip')
from ('$buildDir/') include 'dbfiles.zip'
destinationDir file('$buildDir/ijk.zip')
}
build.dependsOn renameArtifcats
第三种方法:在gradle.build中添加了以下任务,并运行了jenkins作业,但构建失败。
task finalize {
doLast {
from file("$buildDir/dbfiles.zip")
into file("$buildDir/abc.zip")
from file("$buildDir/dbfiles.zip")
into file("$buildDir/def.zip")
from file("$buildDir/dbfiles.zip")
into file("$buildDir/feg.zip")
from file("$buildDir/dbfiles.zip")
into file("$buildDir/ijk.zip")
}
}
build.finalizedBy finalize
在我尝试了所有方法之后,当我运行上述步骤时,在运行构建时出现了错误。
Jenkins错误日志:
FAILURE: Build failed with an exception.
22:34:54
22:34:54 * Where:
22:34:54 Build file '/apps/jenkins_slave/workspace/proj/mod1/build.gradle' line: 292
22:34:54
22:34:54 * What went wrong:
22:34:54 A problem occurred evaluating root project 'mod1'.
22:34:54 > Could not get unknown property 'build' for root project 'mod1' of type org.gradle.api.Project.
换句话说,您想将同一个ZIP文件复制到四个新文件中吗?以下Copy
任务实现应该做到这一点(用Gradle 6.7.1测试(:
task copyFiles(type: Copy) {
into buildDir
from(buildDir) {
include 'dbfiles.zip'
rename 'dbfiles.zip', 'abc.zip'
}
from(buildDir) {
include 'dbfiles.zip'
rename 'dbfiles.zip', 'def.zip'
}
from(buildDir) {
include 'dbfiles.zip'
rename 'dbfiles.zip', 'feg.zip'
}
from(buildDir) {
include 'dbfiles.zip'
rename 'dbfiles.zip', 'ijk.zip'
}
}
或者更简洁地说:
task copyFiles(type: Copy) {
into buildDir
['abc', 'def', 'feg', 'ijk'].each { name ->
from(buildDir) {
include 'dbfiles.zip'
rename 'dbfiles.zip', "${name}.zip"
}
}
}