Как использовать свойства gradle в build.gradle
Когда я запускаю эту задачу:
task tmpTask << {
project.properties.each {println " $it"}
}
Я вижу:
org.gradle.java.home=/usr/lib/jvm/java-6-oracle
Но как использовать эту переменную? Я пробовал оба:
task tmpTask << {
println org.gradle.java.home
println project.properties.org.gradle.java.home
}
Но ничего из этого не получается. Первая печать дает ошибку:
Could not find property 'org' on task ':tmpTask'.
а второй сбой:
Cannot get property 'gradle' on null object
Ответы
Ответ 1
project.properties
является Map<String, ?>
Итак, вы можете использовать
project.properties['org.gradle.java.home']
Вы также можете использовать метод property() (но это выглядит в дополнительных местах):
project.property('org.gradle.java.home')
Ответ 2
Для кого-то еще выгода. Если определяемое вами свойство не разделено точками, вы можете просто обратиться к нему напрямую.
В вашем gradle.properties
:
myProperty=This is my direct property
my.property=This is my dotted property with\t\t tabs \n and newlines
В вашем build.gradle
:
// this works
println myProperty
println project.property('my.property')
// this will not
println my.property
Ответ 3
С gradle.properties
Добавить реквизит в файл gradle.properties
hi1=hi
Из командной строки
Добавьте -Pxxx конец командной строки.
./gradlew -q readPropertiesTask -Phi2=tete
Несколько свойств :
./gradlew -q readPropertiesTask -Phi2=tete -Phi3=rr
Как читать?
val propFromFile = project.properties["hi1"]
println("propFromFile = $propFromFile")