Eine kleine Frage darüber, wie Gradle (Version 3.3) Aufgabenabhängigkeiten in einer Multiprojekteinstellung (mit Java-Unterprojekten) löst. Ich bin ziemlich neu zu grandle, also vielleicht ist es eine dumme Frage ...Gradle dependson vs defaultTasks in Multiprojekt
Ich möchte erreichen, dass eine Aufgabe vor der Kompilierung und eine nach der Kompilierung ausgeführt wird.
Mit DefaultTasks funktioniert es wie erwartet. Aber beim Definieren einer Aufgabe mit dependsOn tut es nicht.
Meine Wurzel build.gradle
Datei wie folgt aussieht:
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'
}
}
Wenn ich ausführen gradle
die Standardaufgaben ausgeführt werden, wie erwartet: I „vor kompilieren“ erhalten, dann werden alle Teilprojekte kompiliert werden, dann „nach der Kompilierung“.
Wenn ich gradle doIt
ausführen bekomme ich folgende Fehlermeldung
Task with path 'classes' not found in root project 'teambits-core'.
Jede Idee, warum dies der Fall ist?
Danke für die ausführliche Antwort, Mark! Vor allem der .mustRunAfter war sehr hilfreich. – Axel
@Axel - froh, ich könnte helfen. Ich habe deine Frage tatsächlich gefunden, weil ich ein ähnliches Problem hatte, und bei der Lösung meines Problems löste es auch dein Problem. –
Das ist eine dieser Win-Win-Situationen :-) – Axel