gpt4 book ai didi

gradle - 仅在 list 更改时阻止执行 jar 任务

转载 作者:行者123 更新时间:2023-12-03 04:02:03 24 4
gpt4 key购买 nike

我正在使用 Gradle 2.12。在我的构建文件中,我配置每个模块都应该在 list 中放置额外的信息。我这样做:

tasks.withType(Jar) {
manifest {
attributes(
'Build-By': buildBy,
'Build-JDK': buildJdk,
'Build-Time-ISO-8601': buildTime_ISO_8601,
'Build-SCM-Info': buildScmInfo
)
}

变量在构建开始时初始化一次。

这很好用,有一个缺点:它会导致 jar 任务总是被调用,因为它发现它的“输入”发生了变化,并且所有依赖于 jar 的模块都被重新编译,这是不必要的。例如,项目结构:

A, B 取决于 A, C 取决于 A

在没有任何代码更改的情况下第二次执行构建时,A 没有被编译,而是构建了一个新的 jar,因此 B 和 C 需要重新编译,因为它们的依赖关系发生了变化。

如何解决这个问题?

最佳答案

您可以尝试将 list 规范移出配置阶段(通过在 doFirst 闭包中声明它),以使 Gradle 查找默认 list 文件中的更改,该文件还没有更改。像这样的东西:

tasks.withType(Jar) {  
doFirst {
manifest {
attributes \
'Build-By': buildBy,
'Build-JDK': buildJdk,
'Build-Time-ISO-8601': buildTime_ISO_8601,
'Build-SCM-Info': buildScmInfo
}
}
}

在这种情况下,只有在执行 jar 任务时才应更改 Manifest 内容。

关于gradle - 仅在 list 更改时阻止执行 jar 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37218682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com