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

use*_*095 19 groovy java-home gradle

当我运行此任务时:

task tmpTask << {
    project.properties.each {println "   $it"}
}
Run Code Online (Sandbox Code Playgroud)

我知道了:

org.gradle.java.home=/usr/lib/jvm/java-6-oracle
Run Code Online (Sandbox Code Playgroud)

但是如何使用这个变量呢?我试过了两个:

task tmpTask << {
    println org.gradle.java.home
    println project.properties.org.gradle.java.home
}
Run Code Online (Sandbox Code Playgroud)

但这一切都不起作用.首次打印出错:

Could not find property 'org' on task ':tmpTask'.
Run Code Online (Sandbox Code Playgroud)

而第二个失败的是:

Cannot get property 'gradle' on null object
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 25

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

所以你可以使用

project.properties['org.gradle.java.home']
Run Code Online (Sandbox Code Playgroud)

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

project.property('org.gradle.java.home')
Run Code Online (Sandbox Code Playgroud)


小智 11

gradle.properties

\n

将道具添加到文件中gradle.properties

\n
hi1=hi\n
Run Code Online (Sandbox Code Playgroud)\n

从命令行

\n

添加-Pxxx命令行结尾。

\n
./gradlew -q readPropertiesTask -Phi2=tete\n
Run Code Online (Sandbox Code Playgroud)\n

\xef\xbc\x9a 的几个属性

\n
./gradlew -q readPropertiesTask -Phi2=tete -Phi3=rr\n
Run Code Online (Sandbox Code Playgroud)\n

如何阅读?

\n
val propFromFile = project.properties["hi1"]\nprintln("propFromFile = $propFromFile")\n
Run Code Online (Sandbox Code Playgroud)\n


al.*_*al. 9

为了其他人的利益。如果您定义的属性不是点分隔的,则可以直接直接引用它。

在您的gradle.properties

myProperty=This is my direct property
my.property=This is my dotted property with\t\t tabs \n and newlines
Run Code Online (Sandbox Code Playgroud)

在您的build.gradle

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

// this will not
println my.property
Run Code Online (Sandbox Code Playgroud)

  • 它对我也不起作用。也许是因为我使用的是 `build.gradle.kts` 文件 (3认同)