如何在 init 脚本中设置全局 Gradle 属性?

问题描述 投票:0回答:3

我想将公司特定的配置从我的

~/.gradle/gradle.properties
移到初始化脚本
~/.gradle/company.init.gradle
中。不幸的是,我无法弄清楚如何在 init 脚本中定义全局 Gradle 属性,就像在
gradle.properties
文件中那样。

我的

~/.gradle/gradle.properties
目前有:

org.gradle.daemon=true
org.gradle.caching=true
[email protected]
com.company.artifactory.apiKey=<api_key>
com.company.artifactory.contextUrl=https://company.jfrog.io/company

我想将这些 Artifactory 值移至公司特定的初始化脚本,

~/.gradle/company.init.gradle
(主要是因为我将
gradle.properties
提交到我的 home 目录存储库):

gradle.allprojects {
    [email protected]
    com.company.artifactory.apiKey=<api_key>
    com.company.artifactory.contextUrl=https://company.jfrog.io/company
}

但是这些方法都无法从我的构建脚本访问该属性:

task('foobar') {
    // Outputs "null"
    println(project.properties['com.company.artifactory.username'])
}
gradle
3个回答
1
投票

Gradle 5.5 开始,您可以将

gradle.properties
放在 自定义 Gradle 发行版中。

我不知道在初始化脚本中设置这些属性的方法。


0
投票

根据 gradle.allprojects,您的配置操作将针对所有 当前可用且已评估的项目发生,并在新项目评估后进行。根据我对你想要实现的目标的理解,我相信 gradle.beforeProject 将是添加属性的地方。


0
投票

使用 gradle.beforeSettings

// ~/.gradle/company.init.gradle.kts

gradle.beforeSettings {
  System.setProperty("org.gradle.daemon", "true")
  System.setProperty("org.gradle.caching", "true")
  System.setProperty("com.company.artifactory.username", "[email protected]")
  System.setProperty("com.company.artifactory.apiKey", "<api_key>")
  System.setProperty("com.company.artifactory.contextUrl", "https://company.jfrog.io/company")
}
© www.soinside.com 2019 - 2024. All rights reserved.