Я определяю дополнительное свойство в build.gradle:
ext {
GRGIT_TARGET_REPO = ...
}
У меня есть классный класс в buildSrc/src/main/groovy
class Utils {
def test() {
println GRGIT_TARGET_REPO
}
}
У меня есть еще один файл Gradle, который может нормально обращаться к GRGIT_TARGET_REPO. Но если он вызывает функцию в классе:
Utils utils = new Utils()
utils.test()
При вызове вышеуказанной функции я получаю следующую ошибку:
No such property: GRGIT_TARGET_REPO for class: Utils
Есть ли способ получить доступ к свойствам проекта/дополнительным в классах Groovy?
Я считаю, что вам нужно будет отправить объект gradle project
в свой класс Utils, чтобы выполнить то, что вы хотите. Другими словами:
class Utils {
def project
def test() {
println(project.ext.GRGIT_TARGET_REPO)
}
}
а также
def utils = new Utils(project: project)
utils.test()
в вашем файле build.gradle.
Каждый файл сборки Gradle имеет project
экземпляр в качестве своего делегата, что означает, что вы можете вызывать все методы в класс проекта непосредственно из кода файла сборки. Примером здесь является то, что вышеуказанный доступ project
вызывает метод получить проект для объекта проекта.
Для дополнительных свойств в приведенном выше groovy/javadoc для объекта Project есть раздел «дополнительные свойства».