2012-06-04 25 views
0

我正在将现有的Maven构建迁移到gralde并面临此问题。 在Maven pom.xml中,在Maven配置文件中指定spring propertyplaceholderConfig值。 Maven构建 规定了三种类型的型材开发,测试和生产线如何在Gradle构建中指定Spring propertyPlaceHolderConfig值?

我想实现在gradle这个构建同样的事情,但直到现在无法弄清楚如何做到这一点的gradle这个

感谢, 马诺

回答

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中定义的普通嵌套地图。

通过传递一个命令行选项“轮廓”您呼叫的gradle

gradle clean build -Pprofile=dev 

你可以通过你的gradle这个项目目前在你什么样的环境。在构建脚本,你可以通过添加这种区分以下到您的构建文件:

def usedProfile = project.getProperty("profile") 

processResources{ 
    expand(profileProperties[usedProfile]) 
} 

这需要您定义的profileAttribute并读取环境属性的相应映射。此环境属性作为映射传递给扩展过滤器方法,这是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]) 
} 

这只是一个草案,当然你也可以使用所有常规的善良在这里在这里添加更多的逻辑,就像有一个默认的配置文件等

希望帮助,

问候, 勒

+0

感谢刘若英,我会尝试这个明天 – manojpardeshi111

相关问题