我有一个Gradle 6.0.1
项目。 build.gradle
(节选)如下:
plugins {
id "application"
id "com.github.edeandrea.xjc-generation"
id "eclipse"
id "idea"
id "java"
id "org.springframework.boot"
}
...
dependencies {
implementation platform("org.springframework.boot:spring-boot-dependencies:${property("spring-boot.version")}")
// ...more stuff here
}
// ...more stuff here
我正在管理settings.gradle
中的所有插件版本:
pluginManagement {
plugins {
id "application"
id "com.github.edeandrea.xjc-generation" version "1.0"
id "eclipse"
id "idea"
id "java"
id "org.springframework.boot" version "${spring-boot.version}"
}
}
rootProject.name = "spring-core"
...并且我通常将工件版本放在gradle.properties
中:
#
# Dependency Versions
oracle.version = 18.3.0.0
spring-boot.version = 2.2.1.RELEASE
#
# Gradle Settings
org.gradle.configureondemand = false
org.gradle.daemon = false
#
# System Settings
systemProp.file.encoding = UTF-8
systemProp.sun.jnu.encoding = UTF-8
现在的问题是,我无法像在settings.gradle
中那样从gradle.properties
中读取build.gradle
中的点属性(我已经尝试使用{{1 }}。
有什么方法可以实现?我可以轻松地将密钥更改为类似${property("spring-boot.version")}
的方式,并且可以正常工作,但是我想知道是否有一种方法可以解决当前的问题:springBootVersion
。
答案 0 :(得分:0)
使用<span>
带有更多变体的简单gradle项目
getProperty("spring-boot.version")
gradle.properties
task test{
doLast {
//success
println project.property('aaa.bbb.ccc')
println project.'aaa.bbb.ccc'
println getProperty('aaa.bbb.ccc')
//failure: Could not get unknown property 'aaa.bbb.ccc' for task ':test' of type org.gradle.api.DefaultTask
println property('aaa.bbb.ccc')
}
}
aaa.bbb.ccc=12345
失败,因为它尝试获取当前对象(任务)的属性,但为项目定义了property('aaa.bbb.ccc')
但是aaa.bbb.ccc
成功是因为它应该成功
project.property('aaa.bbb.ccc')
与groovy中的project.'aaa.bbb.ccc'
相同
project.getProperty('aaa.bbb.ccc')
之所以有效,是因为基础对象GroovyObject
(IHMO)
和project.getProperty('aaa.bbb.ccc')
(实际上没有位于org.gradle.groovy.scripts.BasicScript中且没有真正记录的前缀...