如何在构建时将maven设置或gradle属性中的密码输入到java/kotlin代码中?

jbose2ul  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(661)

你不应该把密码或api密钥放入你的代码中。绝对不要将它们签入源代码管理!maven和gradle都有办法在主文件夹中存储私人资料,并在构建时合并密码。人们使用它来部署到maven central/sonatype。但是,这不是存储代码中使用的密码的最佳场所吗?像数据库密码还是密钥库密码?
有没有一种方法可以在构建时将某些内容合并到代码中,以便java代码可以这样说:

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

这样,您的构建工具就可以动态地替换它,使它最终出现在您的字节码中,而不是出现在您的源代码或源代码存储库中?java或者kotlin注解?

c86crjj0

c86crjj01#

步骤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

相关问题