繁体   English   中英

您如何在构建时从 Maven 设置或 gradle 属性获取密码到您的 java/kotlin 代码中?

[英]How do you get passwords from maven settings or gradle properties into your java/kotlin code at build time?

您不应该将密码或 api 密钥放入您的代码中。 绝对不要将它们检查到源代码管理中! maven 和 gradle 都可以在您的主文件夹中存储私人内容并在构建时合并密码。 人们使用它来部署到 Maven Central/Sonatype。 但这不是存储代码中使用的密码的理想场所吗? 像数据库密码或密钥库密码?

有没有办法在构建时将某些内容合并到您的代码中,以便您的 Java 代码可以这样说:

  private static final String myPw = "$$maven.settings.servers.server[ossrh].password$$";

以便您的构建工具可以即时替换它,以便它最终出现在您的字节码中,而不是您的源代码或源存储库中? 也许是 Java 或 Kotlin 注释?

步骤 1:在编译期间创建文件

tasks.withType<ProcessResources> {
    doLast {
        File("$buildDir/resources/main/build.properties").writeText("""
            version=${someVariable}
        """.trimIndent())
    }
}

第 2 步:在运行时读取

object BuildInfo {
    val VERSION: String

    init {
        // build.properties file will be generated by gradle
        val buildProps = Properties()
        buildProps.load(ClassPathResource("build.properties").inputStream)
        VERSION = buildProps["version"] as String
    }
}

您可以通过BuildInfo.VERSION访问它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM