Gradle 格雷德尔:如何让上传任务进行最新检查?
我正在尝试一件相当简单的事情:不让上传任务对同一版本号执行第二次。我Gradle 格雷德尔:如何让上传任务进行最新检查?,gradle,Gradle,我正在尝试一件相当简单的事情:不让上传任务对同一版本号执行第二次。我 uploadArchives { inputs.file file("version.txt") repositories.mavenDeployer { // ... } } 而version.txt包含: 1.0.2 但是,当我在不更改版本的情况下执行两次任务时,任务不会显示为最新。我还尝试将属性声明为输入,效果相同。 我可能遗漏了一些明显的东西。上传任务类型不会声明任何输出,在
uploadArchives {
inputs.file file("version.txt")
repositories.mavenDeployer {
// ...
}
}
而version.txt包含:
1.0.2
但是,当我在不更改版本的情况下执行两次任务时,任务不会显示为最新。我还尝试将属性声明为输入,效果相同。
我可能遗漏了一些明显的东西。上传任务类型不会声明任何输出,在这种情况下,Gradle会谨慎行事,并假设输出已过期。试试这个:
uploadArchives.outputs.upToDateWhen { true }
现在,uploadArchives
任务应该是最新的,除非要上载的归档文件的版本或内容发生了更改(与以前在同一台机器上执行的任务相比)。存档内容由Upload
任务类型声明为输入
请注意,这不会阻止用户/内部版本A上载与用户/内部版本B上载的版本相同的版本。为此,您必须在outputs.upToDateWhen{}
中实现本地/远程版本比较
另一种选择是在存储库端强制执行“不要覆盖”规则。输入文件从未对我正常工作过,但属性确实可以。您可以尝试
input property'archive\u version'文件('version.txt')。getText('UTF-8')
。我甚至不知道你是否可以投票给你自己问题的答案。似乎我有点急于接受答案。不幸的是,这种方式不太管用。我在问题中加入了更多的细节,终于弄明白了为什么它对詹金斯不起作用。它仍在运行Gradle 1.1。哦,不情愿更新的喜悦…不使用?