我有mutli-module Gradle应用程序,我想添加我在gradle.properties
中定义的属性,以便在application.properties
文件夹的所有子项目的/src/main/resources
中可用。
我尝试过尝试将processResources
插件添加到subprojects
部分。
subprojects {
processResources {
expand(project.properties)
}
// ...
例如,我在gradle.properties
文件中定义了以下属性:
appVersion='0.0.1-SNAPSHOT'
现在,我希望它出现在application.properties
中,因此我添加了一个占位符here。所以,我的application.properties
看起来如下:
app.version=${appVersion}
稍后,我想使用Spring
来使用它,例如:
@Value("${app.version}")
但是,在构建项目后,属性不会被替换,因此我在application.properties
和${appVersion}
占位符中没有版本值。有任何建议怎么做?
答案 0 :(得分:1)
我强烈认为你应该有单独的文件夹用于不同的目的。因此,我建议将application.properties
移至src/main/filteredResources
。然后:
import org.apache.tools.ant.filters.ReplaceTokens
processResources {
with copySpec {
from 'src/main/filteredResources'
filter(ReplaceTokens, tokens: project.properties)
}
}
答案 1 :(得分:0)
问题不在Gradle
配置中,而在于Spring Boot
应用程序的启动方式。我直接从Intellij IDEA运行main()
方法,这对我来说不起作用,可能有些任务没有正确执行。
因此,解决方案是运行./gradlew bootRun
命令。这样就可以正确替换属性。