Java 如何进行梯度资源过滤

Java 如何进行梯度资源过滤,java,spring,gradle,Java,Spring,Gradle,我正在使用gradle开发一个java web应用程序。我想在不同的环境中测试此应用程序,例如本地、测试站点或现场。我有一个想法,根据环境替换属性文件上的变量。假设此web应用程序正在测试站点上运行。这是我的密码 格雷德尔先生 import org.apache.tools.ant.filters.* import groovy.swing.* if(!hasProperty("profile")) { ext.profile = "test" } if(!hasProperty("

我正在使用gradle开发一个java web应用程序。我想在不同的环境中测试此应用程序,例如本地、测试站点或现场。我有一个想法,根据环境替换属性文件上的变量。假设此web应用程序正在测试站点上运行。这是我的密码

格雷德尔先生

import org.apache.tools.ant.filters.*
import groovy.swing.*

if(!hasProperty("profile")) {
    ext.profile = "test"
}

if(!hasProperty("deployTarget")) {
    ext.deployTarget = "local"
}

if(deployTarget == "local") 
{
    apply from: "gradle-properties/local.properties"
}
else if(deployTarget == "test") 
{
    apply from: "gradle-properties/test.properties"
}
else if(deployTarget == "live") 
{
    apply from: "gradle-properties/live.properties"
}

processResources {
    from('src/main/resources') {
        include '*.properties'
        filter(ReplaceTokens, tokens: ['serverEnvironment': serverEnvironment])
    }
}
gradle属性/test.properties

ext.serverEnvironment="test"
server.environment=@serverEnvironment@
src/main/resources/web.application.config.properties

ext.serverEnvironment="test"
server.environment=@serverEnvironment@
TestRestController.java

@RestController
public class TestRestController {

    @Resource //tested @Inject also
    private Environment environment;

    @RequestMapping(value = "/test")
    public String testController() {
        return environment.getProperty("server.environment");
    }
}

我从这些代码中得到“本地”结果。我错过了什么重要的事情吗?请提供建议,非常感谢。

我想
hasProperty(“deployTarget”)
是错误的。将
println serverEnvironment
添加到
processResources
之前,以检查
serverEnvironment
的值,从而确定加载了哪个
gradle属性
文件。此外,
processResources{expand(serverEnvironment:serverEnvironment)}
是一种新的、更简单的令牌替换方法。请注意,它会替换像
${serverEnvironment}
这样的占位符,而不是
@serverEnvironment@
。我猜
hasProperty(“deployTarget”)
是错误的。将
println serverEnvironment
添加到
processResources
之前,以检查
serverEnvironment
的值,从而确定加载了哪个
gradle属性
文件。此外,
processResources{expand(serverEnvironment:serverEnvironment)}
是一种新的、更简单的令牌替换方法。请注意,它会替换像
${serverEnvironment}
这样的占位符,而不是
@serverEnvironment@