我想检查是否设置了两个项目属性,如果没有,请将它们设置为空值,以避免构建失败。这些属性应该来自~/.gradle/gradle.properties
(如果已配置(。
目标是在本地文件中定义S3中Maven存储库的凭据。每个用户都必须将自己的数据放在那里,但我希望构建只输出一个警告,如果没有设置这些警告,则继续。即使没有联系S3,它仍然很有可能成功。
我已经用GroovySSL运行了它,但我现在正在切换到Kotlin,我就是无法正确理解语法。
这就是~/.gradle/gradle.properties
的样子:
s3AccessKeyId=ABCDEFGHIJKLMNOPQRST
s3SecretKey=abcdefghijklmnopqrstuvwxyz1234567890abcd
以下是build.gradle.kts
的相关部分
if (!project.hasProperty("s3AccessKeyId") || !project.hasProperty("s3SecretKey")) {
logger.lifecycle("WARNING: s3AccessKeyId and s3SecretKey not set!")
project.extra["s3AccessKeyId"] = ""
project.extra["s3SecretKey"] = ""
}
repositories {
mavenLocal()
maven {
url = uri("s3://maven-repo.mycompany.com.s3.eu-central-1.amazonaws.com/")
credentials(AwsCredentials::class) {
accessKey = project.extra["s3AccessKeyId"].toString()
secretKey = project.extra["s3SecretKey"].toString()
}
}
}
无论我如何编写s3AccessKeyId=">行,我总是得到错误:
无法在额外属性扩展上获取属性"s3AccessKeyId",因为它不存在
如果所有工件都在本地Maven存储库中找到,我希望构建能够工作,即使没有gradle.properties
。只有在某个工件丢失的情况下,构建才应该中止,并带有一些"错误";凭证错误";错误
正如我所说,它已经与Groovy一起工作了。
为此,您需要使用属性属性,这与额外的不同,如:
project.properties["s3SecretKey"].toString()
然后你需要在你的gradle.properties
:
s3AccessKeyId=ABCDEFGHIJKLMNOPQRST
如果值不存在,它可能会返回null
,因此您可以执行以下操作:
(project.properties["s3SecretKey"] ?: "default value").toString()
而且它应该工作