如何在Gradle构建中指定Spring propertyPlaceHolderConfig值?

时间:2012-06-04 20:24:00

标签: maven gradle

我正在将现有的Maven构建迁移到gralde并面临此问题。 在Maven pom.xml中,spring propertyplaceholderConfig值在Maven配置文件中指定。 Maven构建 指定三种类型的配置文件dev,test和prod

我想在gradle构建中实现同样的目标,但直到现在还无法弄清楚如何在gradle中完成它

谢谢, 的Manoj

1 个答案:

答案 0 :(得分:1)

我认为如何使用gradle为现有的mvn配置文件建模有不同的选择。我在这里举一个例子:

假设你有一个类似的属性文件:

property1=$prop1 //prop1 and prop2 are placeholder for your environment specific values
property2=$prop2

现在,您可以在build.gradle文件中建模您的配置文件:

def profileProperties = [
    test:[prop1:"testValue1", prop2:"testValue2"],
    dev:[prop1:"devValue1", prop2:"devValue2"],
    prod:[prop1:"prodValue1", prop2:"prodValue2"]
]

这只是在groovy中定义的普通嵌套映射。

将命令行选项'profile'传递给您的gradle call

gradle clean build -Pprofile=dev

您可以将您当前所处的环境传递给您的gradle项目。在您的构建脚本中,您可以通过将以下内容添加到构建文件来区分它:

def usedProfile = project.getProperty("profile")

processResources{
     expand(profileProperties[usedProfile])
}

这将获取您定义的profileAttribute并读取环境属性的相应映射。此环境属性作为映射传递给expand filter方法,该方法是gradle API的一部分。有关扩展方法的详细信息,请查看http://gradle.org/docs/current/dsl/org.gradle.api.tasks.Copy.html#org.gradle.api.tasks.Copy:expand(java.util.Map

一个简单的java项目的整个build.gradle文件现在看起来像这样:

apply plugin:'java'

def profileProperties = [
    test:[prop1:"testValue1", prop2:"testValue2"],
    dev:[prop1:"devValue1", prop2:"devValue2"],
    prod:[prop1:"prodValue1", prop2:"prodValue2"]
]


def usedProfile = project.getProperty("profile")
processResources{
    expand(profileProperties[usedProfile])
}

这只是一个草稿,当然你可以在这里使用所有groovy善良来添加更多逻辑,比如拥有默认配置文件等。

希望有所帮助,

的问候, 勒内