我想检查是否设置了两个项目属性,如果没有设置,请将它们设置为空值,以避免构建失败。这些属性应该来自~/.gradle/gradle.properties
(如果已配置)。
目标是拥有在该本地文件中定义的S3中的Maven存储库的凭据。每个用户都必须在其中放置自己的数据,但是我希望构建仅输出警告,如果未设置这些警告,则继续。很有可能即使不与S3联系也能成功。
我已经使其与Groovy DSL一起运行,但是现在我切换到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一起使用了。
答案 0 :(得分:0)
为此,您需要使用与 extra 不同的 properties 属性,例如:
package demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
然后你需要在你的 project.properties["s3SecretKey"].toString()
:
gradle.properties
如果该值不存在,它可能会返回 s3AccessKeyId=ABCDEFGHIJKLMNOPQRST
,因此您可以这样做:
null
它应该可以工作