Gibt es eine Möglichkeit innerhalb externen Eigenschaften in benutzerdefinierten initscript
Block wiederzuverwenden init.gradle?
Gradle Init-Skript Blockeigenschaften
def REPO_URL = 'myRepoUrl'
initscript {
repositories {
maven {
url REPO_URL
}
}
dependencies {
classpath 'some dependency'
}
}
Das gibt mir unbekannte Eigenschaft Fehler. Ich habe auch versucht, ext {} wie so
mit dem gleichen Fehler zu verwenden. Aber es funktioniert in allen anderen Konfigurationsblöcken, die ich bisher sogar innerhalb init.gradle
probiert habe. Dies zwingt mich, Eigenschaften für initscript
Block und Rest der Konfiguration zu duplizieren.
Nach ein bisschen mehr Untersuchung sieht es so aus, als ob es einen Bezug zum umgebenden Umfang völlig verliert. Ich verstehe nicht einmal, warum es sich vom Groovy-Standpunkt aus so verhält.
Also bedeutet dies, dass Gradle irgendwie kompiliert und initscript-Methode ausführt, ohne den umgebenden Bereich auszuführen? Ich bin relativ neu bei Gradle und Groovy und wusste nicht, dass das möglich ist. –
Sie können in den Groovy-Kompilierungsprozess einsteigen und Groovy-Skripte transformieren, bevor sie tatsächlich mit dem Standard-Compiler kompiliert werden. Eine dieser Transformationen sollte in diesem Fall sein, dass der 'initscript'-Block extrahiert und vor dem Rest des Skripts ausgewertet wird, da der Rest des Skripts die Abhängigkeiten benötigt, die Sie in diesem Block in seinem Klassenpfad zur Ausführung deklarieren, andernfalls würden Sie erhalten Kompilieren Sie Fehler, da sich die Abhängigkeiten nicht im Klassenpfad befinden. Hühnerei, wie ich schon sagte. :-) – Vampire
Große Antwort, um in einen Kommentar zu verlinken, um zu verhindern, dass Kollegen fragen, warum ich dieses Stück Code dupliziert habe. –