所以我使用Gradle Kotlin DSL,我想知道是否有可能在settings.gradle.kts
中读取gradle属性
我有这样的gradle.properties
文件:
nexus_username=something
nexus_password=somepassword
我已经这样做了,但还是看不懂这些属性。
dependencyResolutionManagement {
repositories {
mavenCentral()
google()
maven { setUrl("https://developer.huawei.com/repo/") }
maven { setUrl("https://jitpack.io") }
maven {
setUrl("https://some.repository/")
credentials {
val properties =
File(System.getProperty("user.home")+"\\.gradle", "gradle.properties").inputStream().use {
java.util.Properties().apply { load(it) }
}
username = properties["nexus_username"].toString()
password = properties["nexus_password"].toString()
}
}
}
}
发布于 2022-09-01 16:54:25
您可以使用gradle.properties
(仅限Kotlin,因为委托属性是Kotlin特性!)访问在build.gradle.kts
和settings.gradle.kts
中设置的值。
gradle.properties
kotlin.code.style=official
# Your values here
testValue=coolStuff
build.gradle.kts
val testValue: String by project
settings.gradle.kts
val testValue: String by settings
发布于 2022-10-24 08:50:18
可以使用提供者访问分级参数
val usernameProvider = providers.gradleProperty("nexus_username")
val passwordProvider = providers.gradleProperty("nexus_password")
dependencyResolutionManagement {
repositories {
maven {
setUrl("https://some.repository/")
credentials {
username = usernameProvider.getOrNull()
password = passwordProvider.getOrNull()
}
}
}
}
要使用Groovy,需要将变量声明替换为:
def usernameProvider = providers.gradleProperty("nexus_username")
def passwordProvider = providers.gradleProperty("nexus_password")
基于回答
发布于 2022-03-14 04:39:59
谷歌一段时间后,寻找答案。为了防止这些变量被推入存储库,最好使用环境变量而不是gradle.properties
。
仅仅因为在settings.gradle.kts
文件中没有调用属性的函数。而仅仅是强制读取公共gradle.properties
文件就是这样的一种威胁。
设置环境变量后,可以在settings.gradle.kts
中调用该变量,如下所示:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven { setUrl("https://jitpack.io") }
maven {
setUrl(System.getenv("nexus_url"))
credentials {
username = System.getenv("nexus_username")
password = System.getenv("nexus_password")
}
}
}
}
变量不会被推送到存储库中,通过这种方式也可以帮助您在CI/CD (如github操作)中将变量设置为机密。
https://stackoverflow.com/questions/70661139
复制相似问题