Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在构建时将maven设置或gradle属性中的密码输入到java/kotlin代码中?_Java_Maven_Kotlin_Gradle_Passwords - Fatal编程技术网

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

如何在构建时将maven设置或gradle属性中的密码输入到java/kotlin代码中?,java,maven,kotlin,gradle,passwords,Java,Maven,Kotlin,Gradle,Passwords,您不应该在代码中输入密码或api密钥。绝对不要将它们签入源代码管理!maven和gradle都有办法在主文件夹中存储私有内容,并在构建时合并密码。人们使用它来部署到Maven Central/Sonatype。但是,这难道不是存储代码中使用的密码的完美地方吗?像数据库密码还是密钥库密码 有没有一种方法可以在构建时将某些内容合并到您的代码中,这样您的java代码就可以说: private静态最终字符串myPw=“$$maven.settings.servers.server[ossrh].pass

您不应该在代码中输入密码或api密钥。绝对不要将它们签入源代码管理!maven和gradle都有办法在主文件夹中存储私有内容,并在构建时合并密码。人们使用它来部署到Maven Central/Sonatype。但是,这难道不是存储代码中使用的密码的完美地方吗?像数据库密码还是密钥库密码

有没有一种方法可以在构建时将某些内容合并到您的代码中,这样您的java代码就可以说:

private静态最终字符串myPw=“$$maven.settings.servers.server[ossrh].password$$”;

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

步骤1:在编译过程中创建文件

tasks.withType{
多拉斯特{
文件($buildDir/resources/main/build.properties”).writeText(“”
版本=${someVariable}
“.trimIndent())
}
}
步骤2:运行时读取

对象构建信息{
val版本:字符串
初始化{
//build.properties文件将由gradle生成
val buildProps=Properties()
load(ClassPathResource(“build.properties”).inputStream)
VERSION=buildProps[“VERSION”]作为字符串
}
}

您可以通过
BuildInfo.VERSION

访问此文件。这通常是通过在运行时从java代码中的某些属性文件读取设置来实现的,但此文件在构建阶段进行处理,并使用示例中描述的变量替换。对于这种情况,类似的选项是一个不错的选择,例如,因为部署。不,在settings.xml上使用引用不是一个好主意,因为它只在构建时可用,但通常在运行时不可用……还有这里提到的spring cloud配置:。也是一个不错的选择……好吧,但如果您不将build.properties检查到源代码管理中,它是如何部署的?你是不是要和你的申请分开做?在docker容器中构建另一个Build.properties,而您也没有将其放入源代码管理?我希望它能被编译成代码。如果您使用的是Docker容器,那么它应该相当简单:只需通过System.getenv(String)使用环境变量即可