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。哦,不情愿更新的喜悦…不使用?