gpt4 book ai didi

spring-boot - 在构建时从application.properties设置值

转载 作者:行者123 更新时间:2023-12-03 05:18:51 25 4
gpt4 key购买 nike

我发现我可以使用bootRun运行应用程序时设置属性,但是我想在构建它时设置属性。
假设我在application.properties中有一个变量,并且想在构建时设置其值。application.properties:spring.datasource.url=${db}如果我在bootRun { systemProperties = System.properties }中设置build.gradle,则可以使用application.properties将值传递给./gradlew bootRun -Ddb=foo是否可以在构建时间上执行此操作?我基本上将bootRunbootRun { systemProperties = System.properties }更改为build,但是出现错误:

Could not set unknown property 'systemProperties' for task ... of type org.gradle.api.DefaultTask


如何在构建时将值传递给 application.properties
我们希望在构建时传递它们的原因是,我们可以重新启动项目几次,而我们只能构建一次。我们不想每次重启项目时都设置它们。这就是为什么我们要在构建时间上设置它们。

最佳答案

本地解决方案的工作示例here(如果我理解这个问题)。
考虑一个模板文件,例如src/main/resources/template.application.properties:

server.port=__SERVER_PORT
spring.datasource.url=__SPRING_DATASOURCE_URL
然后作为 build任务的一部分,执行 token 替换以生成 src/main/resources/application.properties:
build.doFirst {
def appPropsFilename = "${projectDir}/src/main/resources/application.properties"
ant.delete(file: appPropsFilename)
def appProps = new File(appPropsFilename)
def templateAppProps = new File("${projectDir}/src/main/resources/template.application.properties")

appProps.withWriter { def writer ->
templateAppProps.eachLine { def line ->
def newLine = line.replace("__SERVER_PORT", "6161")
.replace("__SPRING_DATASOURCE_URL", "http://example.com/db")
writer.write(newLine + "\n");
}
}
}
请注意,标记只是示例。可以使用任何您喜欢的名称来命名它们,并且值可以从您需要的任何方便位置获取。
另请注意:您将需要针对用例进行全面测试。现在,它取决于 build任务的执行。 (最好将替换代码放在自己的任务中。)

关于spring-boot - 在构建时从application.properties设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64662549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com