2

私はかなり単純なことを試みています。同じバージョン番号でアップロードタスクを2回実行しないようにします。私

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

そしてversion.txtには以下が含まれています:

1.0.2

ただし、バージョンを変更せずにタスクを2回実行すると、タスクがUP-TO-DATEとして表示されません。同じ効果で、入力としてプロパティを宣言してみました。私はおそらく明らかな何かを見逃しています。

4

1 に答える 1

2

タスクタイプは出力を宣言しません。Uploadその場合、Gradleはそれを安全に再生し、出力が古くなっていると見なします。これを試して:

uploadArchives.outputs.upToDateWhen { true }

これでuploadArchives、バージョンファイルまたはアップロードするアーカイブの内容のいずれかが変更されていない限り(同じマシンでのタスクの以前の実行と比較して)、タスクは最新である必要があります。アーカイブの内容は、Uploadタスクタイプによって入力として宣言されます。

これにより、ユーザー/ビルドAがユーザー/ビルドBによってアップロードされたものと同じバージョンをアップロードできなくなることはありません。これを実現するには、でローカル/リモートバージョン比較を実装する必要がありますoutputs.upToDateWhen {}

もう1つのオプションは、リポジトリ側で「オーバーライドしない」ルールを適用することです。

于 2013-03-28T08:45:29.503 に答える