[英]gradle: tar task not creating a tar.gz
嗨,我在查看了许多方法和一些 SO 帖子后完成了一项 tar 任务。
task buildDist(type: Tar, dependsOn: jar) {
print 'here'
archiveName = 'xyz-' + version
destinationDir = file('build/dist')
extension = 'tar.gz'
compression = Compression.GZIP
from 'build/libs'
include 'xyz.jar'
}
buildDist.mustRunAfter jar
我应用了java
插件,并且jar
任务使xyz.jar
文件在build/libs
下可用。 build/dist
目录尚不存在,但我也尝试new File("build/dist")
。 那也不起作用-我什至将它指向存在的build
目录-不起作用。 我使用/gradlew clean build
运行整个脚本。 上面代码中的打印确实打印了。
我在这里做一些假设,因为您没有通过运行 Gradle 发布 output。
build
任务只是一个普通的 Gradle 任务,它本身不做任何事情。 相反,它取决于其他任务。 如果您创建自己的自定义任务并且希望在执行build
时包含它,则必须为其添加依赖项。 如果这不是问题并且您实际上已经这样做了,请提供更多详细信息,说明在运行build
时是什么使其“不起作用”。
如果您想单独测试您的任务(例如,确保它在不运行单元测试或其他任何不相关的情况下正常工作),只需运行gradlew cleanBuildDist buildDist
。
关于“打印”语句的注释 - 它执行配置阶段,但这并不意味着您可以使用它来测试任务是否实际执行。 事实上,无论您执行什么任务,它很可能都会打印出来。 如果你想在执行时打印一些东西,你必须把它放在一个doLast
块中。
您还应该更改其他一些内容:
buildDir
属性来获取对构建目录的绝对引用。archiveName
和destinationDir
。 请改用archiveFileName
和destinationDirectory
。extension
属性也已被弃用,但如果您自己设置存档的全名,它将被忽略。 所以只需将其删除。 这也意味着您缺少全名的扩展名。from
和include
有点脆弱。 如果您只想 gzip 应用程序 jar,只需使用from jar.archivePath
。例子:
task buildDist(type: Tar, dependsOn: jar) {
archiveFileName = "${jar.baseName}-${version}.tar.gz"
destinationDirectory = file("$buildDir/dist")
compression = Compression.GZIP
from jar.archivePath
}
build.dependsOn buildDist
最后,如果您的意图是创建一个可自行运行的应用程序分发(具有所有必需的依赖项),您应该考虑使用分发插件,也许还有应用程序插件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.