如何在 build.gradle 中使用 gradle 属性

How to use gradle properties in 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
}

但是 none 这行得通。第一次打印给出错误:

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

第二次失败:

Cannot get property 'gradle' on null object

project.properties 是一个 Map<String, ?>

所以你可以使用

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

您也可以使用 property() 方法(但会在其他位置查找):

project.property('org.gradle.java.home')

为了其他人的利益。如果你定义的属性不是点分隔的,那么直接引用即可。

在你的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

来自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")