gradle tar任务未执行
我正在为一个非java项目编写一个Gradle构建,用于将现有目录和tar存档组装到.tar.gz中。如果我使用如下定义,则tar任务将跳过:gradle tar任务未执行,gradle,tar,Gradle,Tar,我正在为一个非java项目编写一个Gradle构建,用于将现有目录和tar存档组装到.tar.gz中。如果我使用如下定义,则tar任务将跳过: task archive(dependsOn: 'initArchive',type: Tar) << { baseName = project.Name destinationDir = new File(project.buildDir.path+'/installer') compression = Compre
task archive(dependsOn: 'initArchive',type: Tar) << {
baseName = project.Name
destinationDir = new File(project.buildDir.path+'/installer')
compression = Compression.GZIP
from (archiveDir)
doLast{
checksum(archivePath)
}
}
当我尝试使用tar任务作为方法时,它失败了,因为找不到方法
task archive(dependsOn: 'initArchive') << {
tar{
baseName = project.Name
destinationDir = new File(project.buildDir.path+'/installer')
compression = Compression.GZIP
from (archiveDir)
doLast{
checksum(archivePath)
}
}
}
FAILURE: Build failed with an exception.
* Where:
Build file '/home/anadi/Code/da-ci-installers/build.gradle' line: 29
* What went wrong:
Execution failed for task ':jenkins-maven-sonar:archive'.
> Could not find method tar() for arguments [build_6a2bckppv2tk8qodr6lkg5tqft$_run_closure3_closure5_closure7@4a5f634c] on task ':jenkins-maven-sonar:archive'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output.
BUILD FAILED
Total time: 8.749 secs
如果不是,如何确保我的构建在使用上述第一种形式时不会“跳过tar”任务。您已经陷入了在执行阶段而不是配置阶段配置任务的经典错误。解决方法是删除
我遇到了一个有趣的情况,在tar任务中使用doLast{}时,我遇到了这个问题
这是因为一个多项目构建:
build.gradle
--> sub-project
--> build.gradle
在这种情况下,如果您尝试在主生成文件中包含一个引用该项目(“:子项目”)
使用的内容的tar
或copy
任务,则开发人员会尝试将其包装在doLast中
例如,主build.gradle文件具有:
task distTar(type: Tar, dependsOn: "buildDist") {
description "Package ProjName into a Tar file"
group "Build"
baseName = 'outbasename'
archiveName = baseName + '.tar.gz'
compression = Compression.GZIP
destinationDir = file(project(":packaging").buildDir.path)
extension = 'tar.gz'
into('outdir') {
from project(":sub-project").war
}
}
所以他们得到了一个错误,project(“:subproject”)。war
不存在。因此,为了解决这个问题,有人把任务和错误放在一边。糟糕
task distTar(type: Tar, dependsOn: "buildDist") {
doLast { // <-- BAD!!
description "Package ProjName into a Tar file"
group "Build"
baseName = 'outbasename'
archiveName = baseName + '.tar.gz'
compression = Compression.GZIP
destinationDir = file(project(":packaging").buildDir.path)
extension = 'tar.gz'
into('outdir') {
from project(":sub-project").war
}
}
}
task distTar(类型:Tar,dependsOn:“buildDist”){
doLast{//不可思议?我也遇到了这个问题,没有犯那个错误。生成路径的代码创建了一个不存在的路径(因此,没有源文件)。因此,当出现奇怪情况时,记录路径并检查它,如果它不是配置-执行问题注意,左移位运算符当前已被弃用,将在未来版本中删除:
task distTar(type: Tar, dependsOn: "buildDist") {
description "Package ProjName into a Tar file"
group "Build"
baseName = 'outbasename'
archiveName = baseName + '.tar.gz'
compression = Compression.GZIP
destinationDir = file(project(":packaging").buildDir.path)
extension = 'tar.gz'
into('outdir') {
from project(":sub-project").war
}
}
task distTar(type: Tar, dependsOn: "buildDist") {
doLast { // <-- BAD!!
description "Package ProjName into a Tar file"
group "Build"
baseName = 'outbasename'
archiveName = baseName + '.tar.gz'
compression = Compression.GZIP
destinationDir = file(project(":packaging").buildDir.path)
extension = 'tar.gz'
into('outdir') {
from project(":sub-project").war
}
}
}