Ich habe ein komplexes Gradle-Skript, das eine Fülle von Funktionen zum Erstellen und Bereitstellen einer Reihe von Netbeans-Projekten in einer Reihe von Umgebungen bereitstellt.Wie kann ich ein Gradle-Skript in ein anderes importieren?
Das Skript funktioniert sehr gut, aber im Wesentlichen ist alles über ein halbes Dutzend Karten mit Projekt- und Umgebungsinformationen konfiguriert.
Ich möchte die Aufgaben in eine andere Datei abstrahieren, so dass ich einfach meine Karten in einer einfachen Build-Datei definieren und die Aufgaben aus der anderen Datei importieren kann. Auf diese Weise kann ich die gleichen Kernaufgaben für eine Anzahl 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 Unterlagen bis jetzt vergeblich durchsucht.
Zusätzliche Informationen
Nachdem Tom Antwort unten, ich dachte, ich würde versuchen, und klären, was genau ich meine.
Grundsätzlich habe ich ein Gradle-Skript, das eine Reihe von Teilprojekten ausführt. Die Teilprojekte sind jedoch alle Netbeans-Projekte und kommen mit ihren eigenen Ameisen-Build-Skripten, so dass ich Aufgaben habe, um jede davon aufzurufen.
Mein Problem ist, dass ich eine Konfiguration am Anfang der Datei haben, wie zum Beispiel:
projects = [
[name:"MySubproject1", shortname: "sub1", env:"mainEnv", cvs_module="mod1"],
[name:"MySubproject2", shortname: "sub2", env:"altEnv", cvs_module="mod2"]
]
ich dann Aufgaben erzeugen wie:
projects.each({
task "checkout_$it.shortname" << {
// Code to for example check module out from cvs using config from 'it'.
}
})
Ich habe viele dieser Art von Task Generations Snippets, und alle von ihnen sind generisch - sie hängen vollständig von der Konfiguration in der Projektliste ab.
Also, was ich will, ist eine Möglichkeit, dies in einem separaten Skript zu setzen und es in der folgenden Art und 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.
So in diesem Beispiel wird tasks.gradle alle die allgemeine Aufgabe Generation hat Code ein und wird für die Projekte ausgeführt, die in der Hauptdatei build.gradle definiert sind. Auf diese Weise ist tasks.gradle eine Datei, die von allen großen Projekten verwendet werden kann, die aus einer Reihe von Unterprojekten mit Netbeans-Ameisen-Build-Dateien bestehen.
Betrachten. (Siehe "12.4. Konfigurieren des Projekts mit einem externen Buildskript" hier http://digle.org/0.9-preview-1/docs/userguide/tutorial_this_and_that.html#sec:configuring_using_external_script) –
@PetrGladkikh 'apply from' wird sofort ausgeführt die externen Aufgaben. Dies ist möglicherweise in der Ausführungslogik nicht bevorzugt (d. H. Ich möchte die Aufgaben ausführen, wenn ich möchte, nicht sofort). –
Diese Aussage im obigen Kommentar ist ** nicht wahr **: 'apply from' führt sofort die externen Aufgaben aus. Lass dich nicht irreführen. Externe Aufgaben werden konfiguriert, nicht ausgeführt. – Jarekczek