将Gradle属性添加到application.properties资源

时间:2016-10-13 09:30:01

标签: java spring gradle

我有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}占位符中没有版本值。有任何建议怎么做?

2 个答案:

答案 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命令。这样就可以正确替换属性。