Как использовать свойства 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")