groovy 访问存储在www.example.com中settings.gradle内的点属性gradle.properties

o75abkj4  于 2022-11-01  发布在  其他
关注(0)|答案(2)|浏览(125)

我有一个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

现在的问题是,我无法以在build.gradle中读取点属性的方式读取settings.gradle中的点属性(从gradle.properties)-我已经尝试使用${property("spring-boot.version")}
我可以很容易地将密钥更改为springBootVersion之类的东西,它也能工作,但我想知道是否有一种方法可以像我目前拥有的那样:spring-boot.version .

bqjvbblv

bqjvbblv1#

使用getProperty("spring-boot.version")
简单的gradle项目,带有其他变体

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') 
    }
}

gradle.properties

aaa.bbb.ccc=12345

property('aaa.bbb.ccc')失败,因为它尝试获取当前对象(任务)的属性,但aaa.bbb.ccc是为项目定义的
但是project.property('aaa.bbb.ccc')成功,因为它应该
project.'aaa.bbb.ccc'与groovy中的project.getProperty('aaa.bbb.ccc')相同
project.getProperty('aaa.bbb.ccc')可以正常工作,因为groovy基本对象GroovyObject(IHMO)
getProperty(name)没有前缀实际上位于org.gradle.groovy.scripts.basicScript中,并且没有真正的文档记录...

x3naxklr

x3naxklr2#

对我来说,@daggett的解决方案不起作用,但我可以通过settings.gradle访问~/.gradle/gradle.properties内部定义的属性,方法如下:

settings.ext.find('MY_PROPERTY')

为了提供一些上下文,我将使用此脚本读取Gradle构建缓存节点远程服务器的凭据:

buildCache {
    boolean isCiServer = System.getenv().containsKey("CI")
    remote(HttpBuildCache) {
        enabled = settings.ext.find('GRADLE_BUILD_CACHE_NODE_PWD') != null
        url = 'https://myserver:443/cache/'
        allowUntrustedServer = true
        push = isCiServer
        credentials {
            username = settings.ext.find('GRADLE_BUILD_CACHE_NODE_USR')
            password = settings.ext.find('GRADLE_BUILD_CACHE_NODE_PWD')
        }
    }
}

相关问题