2

我正在尝试一些相当简单的事情:没有为相同的版本号再次执行上传任务。我

uploadArchives {
    inputs.file file("version.txt")
    repositories.mavenDeployer {
        // ...
    }
}

version.txt 包含:

1.0.2

但是,当我在不更改版本的情况下执行两次任务时,该任务不会显示为 UP-TO-DATE。我还尝试将属性声明为输入,效果相同。我可能遗漏了一些明显的东西。

4

1 回答 1

2

Upload任务类型不声明任何输出,在这种情况下,Gradle 会安全并假定输出已过期。尝试这个:

uploadArchives.outputs.upToDateWhen { true }

现在uploadArchives任务应该是最新的,除非版本文件或要上传的档案内容发生了变化(与之前在同一台机器上执行任务相比)。归档内容由Upload任务类型声明为输入。

请注意,这不会阻止用户/构建 A 上传与用户/构建 B 上传的相同版本。为此,您必须在outputs.upToDateWhen {}.

另一种选择是在存储库端强制执行“不覆盖”规则。

于 2013-03-28T08:45:29.503 回答