3

カスタム タスク クラスで利用できる何らかの「構築後のフック」があるので、クラス固有のロジックでinputsやのようなメソッドを呼び出すことができますか?outputs

次のようなカスタムGradleタスククラスを定義しているとしましょう

 class ExampleTask extends DefaultTask {
     def exFile = null
 }

今、私はそれをインスタンス化したいと思います

task('ex', type: ExampleTask) {
    exFile = file("some-example.json")
}

inputs(exFile)...そして、インスタンスで同等のものを自動的に実行したいと思います。この種の構成を処理するロジックはどこに行くのでしょうか? @InputFiles次のように、カスタム タスク クラスのメソッドにデコレータを追加できることがわかりました。

 @InputFiles
 def getFiles(){
   file(exFile)
 }

...しかし、これはあまり一般的ではないようです。一部を書き換えるのではなく、既存の機能をそのまま使用したいと考えています。inputs()しかし、私はそれをどこから呼び出すべきかわかりません。

4

2 に答える 2

2

必要に応じて、これらの初期化をタスク クラスの引数なしのコンストラクターで実行できます。多くの場合、デフォルトのプロパティ値はプラグインによって設定されます (特に、デフォルト値がタスク クラスの外部からの情報に依存する場合)。入出力アノテーションは、入出力 API より優先されるべきです。(後者は、独自のタスク クラスを持たないアドホック タスク用に存在します。)

于 2013-10-01T05:12:17.900 に答える
0

私はまったく同じものが必要です。私の理解では、答えは多かれ少なかれあります-いいえ、それは現在不可能です。

https://discuss.gradle.org/t/custom-task-with-extensions/12491を参照してください

于 2015-11-04T08:41:58.727 に答える