Ich habe ein komplexes Gradle-Skript, das eine Vielzahl von Funktionen zum Erstellen und Bereitstellen einer Reihe von Netbeans-Projekten in einer Reihe von Umgebungen zusammenfasst.
Das Skript funktioniert sehr gut, aber im Wesentlichen wird alles über ein halbes Dutzend Karten konfiguriert, die Projekt- und Umgebungsinformationen enthalten.
Ich möchte die Aufgaben in eine andere Datei abstrahieren, damit ich meine Maps einfach in einer einfachen Build-Datei definieren und die Aufgaben aus der anderen Datei importieren kann. Auf diese Weise kann ich dieselben Kernaufgaben für eine Reihe von Projekten verwenden und diese Projekte mit einem einfachen Satz von Karten konfigurieren.
Kann mir jemand sagen, wie ich eine Gradle-Datei in eine andere importieren kann, ähnlich wie bei Ant? Ich habe Gradles Dokumente bisher ohne Erfolg durchsucht.
Zusätzliche Information
Nach Toms Antwort unten dachte ich, ich würde versuchen, genau zu klären, was ich meine.
Grundsätzlich habe ich ein Gradle-Skript, das eine Reihe von Teilprojekten ausführt. Die Teilprojekte sind jedoch alle Netbeans-Projekte und werden mit eigenen Ant-Build-Skripten geliefert, sodass ich Aufgaben in Gradle habe, um jedes dieser Projekte aufzurufen.
Mein Problem ist, dass ich oben in der Datei eine Konfiguration habe, wie zum Beispiel:
projects = [
[name:"MySubproject1", shortname: "sub1", env:"mainEnv", cvs_module="mod1"],
[name:"MySubproject2", shortname: "sub2", env:"altEnv", cvs_module="mod2"]
]
Ich generiere dann Aufgaben wie:
projects.each({
task "checkout_$it.shortname" << {
// Code to for example check module out from cvs using config from 'it'.
}
})
Ich habe viele dieser Arten von Snippets zur Aufgabengenerierung, und alle sind generisch - sie hängen vollständig von der Konfiguration in der Projektliste ab.
Ich möchte also eine Möglichkeit, dies in ein separates Skript einzufügen und auf folgende Weise zu importieren:
projects = [
[name:"MySubproject1", shortname: "sub1", env:"mainEnv", cvs_module="mod1"],
[name:"MySubproject2", shortname: "sub2", env:"altEnv", cvs_module="mod2"]
]
import("tasks.gradle") // This will import and run the script so that all tasks are generated for the projects given above.
In diesem Beispiel enthält task.gradle den gesamten generischen Code zur Aufgabengenerierung und wird für die in der Hauptdatei build.gradle definierten Projekte ausgeführt. Auf diese Weise ist task.gradle eine Datei, die von allen großen Projekten verwendet werden kann, die aus einer Reihe von Unterprojekten mit Netbeans Ant Build-Dateien bestehen.
apply from
führt die externen Aufgaben sofort aus. Dies ist in der Ausführungslogik möglicherweise nicht vorzuziehen (dh ich möchte die Aufgaben ausführen, wenn ich möchte, nicht sofort).
apply from
Führt die externen Aufgaben sofort aus. Lass dich nicht irreführen. Externe Aufgaben werden konfiguriert und nicht ausgeführt.