Ich habe ein Projekt, das so aussieht.Gradle - Ausführungsreihenfolge Problem
root
build.gradle
settings.gradle
project1
build.gradle
project2
build.gradle
project3
build.gradle
project4
build.gradle
settings.gradle sieht so aus.
include ':project1', ':project2', ':project3', ':project4'
build.gradle (von der Wurzel)
apply plugin: 'java'
apply plugin: 'eclipse'
repositories {
mavenCentral()
}
dependencies {
compile project(':project1')
compile project(':project2')
compile project(':project3')
compile project(':project4')
}
Also im Grunde, ich will 'project1', bevor project2 gebaut werden, 3, 4, weil es unsere interne Abhängigkeit (jar herunterladen muss und einige Schemadateien), so dass Projekt2, 3 und 4 Artefakte aus den Schemadateien (aus Projekt1) extrahieren können.
Aber wenn ich es ausführe, sehe ich Standardausgabe von Projekt2 und 3 gedruckt zuerst, bevor Projekt1 läuft.
Insbesondere Projekt2 enthält viele Aufgaben (Typ: JavaExec), die diese Art von Argumenten ausführen.
main = 'org.apache.xmlbeans.impl.tool.SchemaCompiler'
classpath "${BUILDROOT}/project1/${COMMON_DENEPDENCY_FILE}"
args "-src", "${projectDir}/src/main/java", "-d", "build/generated", "-srconly", "${projectDir}/xml/schema/example1.xsd", "${projectDir}/xml/schema/example1.xsdconfig"
Eine der Aufgaben sieht so aus. Ich habe mehrere Aufgaben, die in Projekt2 so aussehen. Daher muss project1 vollständig erstellt sein, bevor project2 und project3 ausgeführt werden können.
build.gradle von project2
task xmlbeansExample2(dependsOn: xmlbeansExample1, type: JavaExec) {
println "Example2 is running"
main = 'org.apache.xmlbeans.impl.tool.SchemaCompiler'
classpath "${BUILDROOT}/common/${COMMON_DENEPDENCY_FILE}"
args "-src", "${projectDir}/src/main/java", "-d", "build/generated", "-srconly", "${projectDir}/xml/schema/example2.xsd", "${projectDir}/xml/schema/example2.xsdconfig"
println "Example2 is done"
}
task handleSchema(dependsOn: ['xmlbeansExample1', 'xmlbeansExample2'])
build.dependsOn handleSchema, jar
Wenn ich laufen 'Gradle build' von der Wurzel oder project2 sehe ich den Ausdruck aus project2 zuerst.
Ist etwas mit meinem Layout nicht in Ordnung?
Mein Team migriert von Ant nach Gradle, aber Gradle scheint etwas anders zu sein als Ant. Vielleicht bin ich etwas missverstanden über die Größe.