12

最終出力ファイルを Gradle で作成した後、2 つのことを行います。ローカルの version.properties ファイルを更新し、最終出力 final をアーカイブ用の特定のディレクトリにコピーします。今説明したことを正確に実行する 2 つのメソッドが既に実装されていると仮定しましょupdateVersionProperties()archiveOutputFile()

これを行うための最良の方法は何だろうと思っています...

代替案 A:

assembleRelease.doLast {
    updateVersionProperties()
    archiveOutputFile()
}

代替 B:

task myBuildTask(dependsOn: assembleRelease) << {
    updateVersionProperties()
    archiveOutputFile()
}

ここでは、代替 A のようにassembleReleaseの代わりにmyBuildTaskを呼び出します。

これを行うための推奨される方法とその理由はどれですか? どちらか一方に利点はありますか?説明をお願いします... :)

4

1 に答える 1

14

可能な限り、新しいアクティビティを個別のタスクとしてモデル化してください。(あなたの場合、さらに2 つのタスクを追加できます。) これには多くの利点があります。

  • 現在実行中または失敗したアクティビティに関するより良いフィードバック
  • タスクの入力と出力を宣言する能力 (これから得られるすべての利益を享受する)
  • 既存のタスク タイプを再利用する機能
  • Gradle がタスクを並行して実行する可能性が高まる
  • 等。

アクティビティを個別のタスクとしてモデル化することが簡単にできない場合があります。(1 つの例は、既存のタスクの出力をその場で後処理する必要がある場合です。これを別のタスクで行うと、元のタスクがup-to-date後続の実行に含まれなくなります。) その場合にのみ、アクティビティを既存のでタスクdoLast

于 2013-07-03T06:40:14.293 に答える