如何使用Kotlin DSL定义Gradle项目属性

我想检查是否设置了两个项目属性,如果没有设置,请将它们设置为空值,以避免构建失败。这些属性应该来自~/.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一起使用了。

alishar 回答:如何使用Kotlin DSL定义Gradle项目属性

为此,您需要使用与 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

它应该可以工作

本文链接:https://www.f2er.com/3116611.html

大家都在问