3

インストールルーチンには3つの段階があります。

1)ダウンロード2)解凍3)構成

ダウンロードするには、ant.getとant.checksumを使用するので、独自のDownloadTaskクラスをビルドしてから、ビルドで次のようにします。

task download (type: DownloadTask) {
    url = url
    checksumAlgorithm = 'MD5'
    destFile = zipFile
}

だから私は4つのタスクを持ってきました:

task download {...}
task unzip {...}
task configure {..}
task install(dependsOn: [download, unzip, configure]) {}

しかし、dependsOnがソート順を尊重していないことに気づきました。http://issues.gradle.org/browse/GRADLE-427

だから..ここでの回避策はどうですか?

ダウンロードにはDownloadTaskクラスが使用されるため、このタスクのみをメソッドとして移動することはできません。すべてをメソッドとして(DownloadTaskも)移動できますが、ここでは最善の解決策ではないようです。

ありがとう

4

2 に答える 2

9

これが助けになる場合は、手動で依存関係を呼び出すこともできます。

task install << {
    download.execute()
    unzip.execute()
    configure.execute()
}

これが本当のGradleのアイデアだとは思いませんが、私のマルチプロジェクトビルドでは、これは非常にうまく機能しました。

ご挨拶、

1月

于 2011-06-08T23:30:32.523 に答える
2

timが述べたように、これらの依存関係を持つようにビルドを構成できます。タスクを「再利用」するとはどういう意味ですか?ここでは、dependsOnプロパティを使用する代わりに自動配線を使用できます。

Autowireは、タスクのダウンロードの出力を解凍タスクの入力として宣言することを意味します。上記の例では、URLはダウンロードタスクの入力であり、destFileは出力です。このアプローチにより、各タスクの再利用が容易になり、明示的な順序付けが不要になります。Gradleユーザーガイドの第14.8章に、この種の自動配線の簡単な紹介があります(http://www.gradle.org/current/docs/userguide/more_about_tasks.html#N10D4D)。TaskInputsとTaskOutputs(この章で説明)についてもJavadocを参照してください。

よろしく、ルネ

于 2011-06-07T17:45:39.003 に答える