web-dev-qa-db-fra.com

Comment utiliser les propriétés de gradle dans build.gradle

Lorsque j'exécute cette tâche:

task tmpTask << {
    project.properties.each {println "   $it"}
}

Je vois:

org.gradle.Java.home=/usr/lib/jvm/Java-6-Oracle

Mais comment utiliser cette variable? J'ai essayé les deux:

task tmpTask << {
    println org.gradle.Java.home
    println project.properties.org.gradle.Java.home
}

Mais rien de tout cela ne fonctionne. La première impression donne une erreur:

Could not find property 'org' on task ':tmpTask'.

tandis que le second échoue avec:

Cannot get property 'gradle' on null object
23
user1723095

project.properties est un Map<String, ?>

Vous pouvez donc utiliser

project.properties['org.gradle.Java.home']

Vous pouvez également utiliser la méthode property () (mais qui recherche dans des emplacements supplémentaires):

project.property('org.gradle.Java.home')
30
JB Nizet

Pour le bénéfice de quelqu'un d'autre. Si la propriété que vous définissez n'est pas séparée par des points, vous pouvez simplement vous y référer directement.

Dans votre gradle.properties:

myProperty=This is my direct property
my.property=This is my dotted property with\t\t tabs \n and newlines

Dans votre build.gradle:

// this works
println myProperty
println project.property('my.property')

// this will not
println my.property
11
al.

De gradle.properties

Ajouter un accessoire au fichier gradle.properties

hi1=hi

Depuis CommandLine

Ajoutez -Pxxx fin de ligne de commande.

./gradlew -q readPropertiesTask -Phi2=tete

Plusieurs propriétés:

./gradlew -q readPropertiesTask -Phi2=tete -Phi3=rr

Comment lire?

val propFromFile = project.properties["hi1"]
println("propFromFile = $propFromFile")
0
linkaipeng