这看起来应该很简单,但我卡住了!我有一个gradle任务,压缩一些文件并创建一个归档。我想使用我所在项目的版本字符串作为归档名称的后缀(这是多项目构建中的子项目)
在同一个build.gradle文件中还有另一个任务可以访问此版本字段,我也想访问该字段。
task releasePublishAuto(dependsOn: [tasks.cppApiVersion, rootProject.tasks.releasePublish]) {
doLast {
println("############################################################")
println("# PUBLISHED CPP API WITH VERSION: $version")
println("############################################################")
}
}
你可以看到它访问version变量并使用$version打印它。它打印类似# PUBLISHED CPP API WITH VERSION: 1.256.4-SNAPSHOT
的内容
现在,我的任务是压缩任务,所以有点不同:
task zipGeneratedCppClientApi(type: Zip, group: "code generator", dependsOn: [tasks.cppApiVersion, "generateCormorantCPP"]) {
from(fileTree(dir: "$buildDir/generated/cormorant_cpp", include: "**/*"))
archiveFileName = "$buildDir/distributions/generated-cpp-api-$version"
}
我本以为这会创建一个名为generated-cpp-api-1.256.4-SNAPSHOT
的zip文件,但得到的却是一个名为generated-cpp-api-null
的zip文件。(或诸如此类),不是当前项目的版本。我尝试访问rootproject.version
,但也是null -这不是根项目,而是其子项目!
如何在gradle中访问此非根项目中的版本字段?
澄清一下:如果我从任务中删除type:zip
,version
会指向正确的值,但如果没有type:zip
,它就不会创建zip文件,所以不是很有帮助。
1条答案
按热度按时间dojqjjoe1#
在Zip任务的上下文中,
version
属性引用AbstractArchiveTask.version属性,正如您所猜测的,而不是当前项目版本属性。正如您所看到的,此version
属性在AbstractArchiveTask类中已被弃用,可能是为了避免此类混淆。要使用项目版本,只需使用
${project.version}
,如下例所示。在子项目生成脚本中: