Есть ли способ повторного использования внешних свойств в пользовательском initscript
блоке внутри init.gradle?
Gradle Стартового скрипта свойств блока
def REPO_URL = 'myRepoUrl'
initscript {
repositories {
maven {
url REPO_URL
}
}
dependencies {
classpath 'some dependency'
}
}
Это дает мне неизвестную ошибку свойства. Я также пробовал использовать ext {} так
ext {
REPO_URL = 'myRepoUrl'
}
с той же ошибкой. Тем не менее он работает во всех других конфигурационных блоках, которые я пробовал до сих пор даже внутри init.gradle
. Это заставляет меня дублировать свойства для блока initscript
и остальной части конфигурации.
После немного более осмотра, похоже, что он полностью лишен ссылки на окружающий объем. Я даже не понимаю, почему он ведет себя таким образом с точки зрения Groovy.
Значит ли это, что Gradle каким-то образом компилирует и выполняет метод initscript без выполнения окружения? Я редко отношусь к Gradle и Groovy и не знал, что это возможно. –
Вы можете подключиться к процессу компиляции Groovy и преобразовать скрипты Groovy, прежде чем они будут скомпилированы со стандартным компилятором. Одна из этих трансформаций в этом случае должна заключаться в том, что блок 'initscript' извлекается и оценивается до остальной части сценария, так как остальная часть скрипта нуждается в зависимостях, которые вы объявляете в этом блоке в своем пути к классам, для выполнения, иначе вы получите компилировать ошибки, поскольку зависимости не находятся в пути к классам. Как я сказал, курица и яйцо. :-) – Vampire
Отличный ответ на ссылку в комментарий, чтобы коллеги не спрашивали, почему я дублировал этот кусок кода. –