Gradle(バージョン3.3)がマルチプロジェクト設定(Javaサブプロジェクトを使用)でタスク依存関係を解決する方法についての小さな質問です。私はかなり勉強しているので、愚かな質問かもしれません...マルチプロジェクトのGradle dependsonとdefaultTasks
私はコンパイルの前に実行されるタスクとコンパイル後に実行されるタスクを達成したいと思います。
defaultTasksを使用すると、期待どおりに動作します。しかし、dependsOnを使ってタスクを定義するときは、そうではありません。
マイルートbuild.gradle
ファイルは次のようになります。予想通り、私はgradle
デフォルトのタスクを実行すると
defaultTasks 'a', 'classes', 'b'
task a {
doLast {
println 'before compile'
}
}
task b {
doLast {
println 'after compile'
}
}
task doIt(dependsOn: [a, 'classes', b]) {
doLast {
println('done!')
}
}
allprojects {
group = 'foo'
repositories {
mavenCentral()
maven {
url 'https://maven.atlassian.com/3rdparty/'
}
}
}
subprojects {
ext {
springVersion = '4.3.5.RELEASE'
}
apply plugin: 'java'
dependencies {
compile fileTree(dir: 'lib', include: '*.jar')
testCompile group: 'junit', name: 'junit', version: '4.12'
}
}
が実行されている:私は取得「コンパイルの前に」、そして、すべてのサブプロジェクトは、「コンパイル後」、その後、コンパイルされています。
私はgradle doIt
を実行すると、私は次のエラーメッセージ
Task with path 'classes' not found in root project 'teambits-core'.
にこのような場合は理由を任意のアイデアを得ますか?
詳細な回答ありがとうございました。特に.mustRunAfterはとても役に立ちました。 – Axel
@Axel - 私は助けることができてうれしい。私は実際にあなたの質問を見つけました。私も同様の問題がありました。私の問題を解決するには、それもあなたの問題を解決しました。 –
これはwin-winの状況の1つです:-) – Axel