Wie schaffen Sie zusätzliche jar-Artefakte aus kompilierten Klassen mit Gradle?
Kann ich nicht sagen, ob das ein bug ist mit Gradle 1.0m7, oder wenn wir gerade dabei sind diese falsch.
Wir haben einige Klassen, die dann kompiliert als abgesehen von einem Projekt, das wir wollen individuell jar in eigene Artefakt. Diese sind zum Beispiel standalone-domain model-Objekte, das wir teilen wollen mit einem weiteren Projekt.
Ich würde es vorziehen, nicht zu gehen in die multi-Projekt-build-route, so wie wir sagen, Gradle, um erstellen Sie eine weitere jar für diese?
Derzeit sind wir, dies zu tun:
task modelJar(type: Jar) {
classifier = 'model'
from fileTree(dir: sourceSets.main.classesDir).matching { include 'com/foo/bar/model/**' }
}
artifacts {
archives modeljar
}
Das Problem hier, ist die modeljar Aufgabe läuft vor die Klassen kompiliert werden. Auf den ersten, die wir nicht erkennen und dachte es funktioniert. Stellt sich heraus, das Artefakt aufnehmen Klassen aus dem vorherigen Lauf, nicht der aktuellen Ausführung. Mache sauber, bevor Sie die build-Ergebnisse in einem Glas mit keine Klassen in es, und es offenbart sich das problem.
Ich war auf der Suche auf benutzerdefinierte Konfiguration, aber es scheint ziemlich Komplex und ich wollte nicht allzu kompliziert wird die build-Datei.
Schätzen jede Beratung.
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie sieht es damit aus
modelJar
Aufgabe abhängenclasses
(built-in) Aufgabe? Dies sollte sicherstellen, dass die Kompilierung abgeschlossen ist, bevormodelJar
Aufgabe.der bequemste Weg, dies zu tun ist,
Etwas hintergrund:
sourceSets.main.die Ausgabe ist eine bebaubare filecollection. Dies bedeutet, dass, wenn eine Aufgabe funktioniert mit dieser Datei Sammlung, gradle weiß, dass diese Datei Sammlung erstellt werden muss, bevor eine andere Aufgabe verwenden können. in diesem speziellen Fall, sourcesets.main.Klassen, die verdrahtet ist, um die Klassen Aufgabe, das java-plugin. Daher Sie Ihre modelJar Aufgabe nicht benötigen, hängen die Klassen Aufgabe explizit.