2013-08-29 54 views
0

我想开发一个用特定于环境的属性替换应用程序属性的ant脚本。我的要求是我将拥有单个env.properties文件中的所有环境属性。在构建应用程序时,我需要用env.properties文件中的任何内容替换。当我拥有每个环境的属性文件时,Ant替换效果很好。根据Ant脚本中的环境动态替换属性

样品:env.properties

dev.AddNETWORK_USER=devUser 
dev.ADDPASS=devPass 
sit.AddNETWORK_USER=situser 
sit.ADDPASS=sitPass 

这需要在mule.properties被替换为 的开发环境:

dev.AddNETWORK_USER=devUser 
dev.ADDPASS=devPass 

为SIT环境:

AddNETWORK_USER=sitUser 
ADDPASS=sitPass 
+0

可能重复[Java构建的时间常数设置](http://stackoverflow.com/questions/12790609/java-build-time-constant-configuration) –

+0

我已经检查过职。这对我也很好。但是,如果我需要为所有环境拥有单个属性文件? – agilejoy

+0

为什么要让解决方案更复杂?问题是ANT不支持嵌套的属性名称,例如:$ {$ {ENV} .AddNETWORK_USER} –

回答

1

您可以使用属性ant任务在您的env.properties文件中。这允许根据您的需要访问键=值对。您可以将您的环境特定属性重定向到您想要的文件或写入一个特定文件。的

<property file="${base.dir}/env.properties"/> 
    <for list="dev,sit" param="value"> 
     <sequential> 
       <echo message="@{value}.AddNETWORK_USER=${@{value}.AddNETWORK_USER}" append="true" file="${base.dir}/@{value}Any-File.prop"/> 
       <echo message="${line.separator}" append="true" file="${para.home}/@{value}Any-File.prop"/> 
       <echo message="@{value}.ADDPASS=${@{value}.ADDPASS}" append="true" file="${para.home}/@{value}Any-File.prop"/> 

      </sequential> 
    </for>