![](/img/trans.png)
[英]How do you get gradle to access a string from a Java class in the project in my build.gradle?
[英]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.