基于Ant脚本中的环境动态替换属性

基于Ant脚本中的环境动态替换属性,ant,Ant,我想开发ant脚本,用特定于环境的属性替换应用程序属性。我的要求是将所有环境属性保存在一个env.properties文件中。在构建应用程序期间,我需要替换为env.properties文件中的任何内容。当我有每个环境的属性文件时,Ant replace工作得很好 示例:环境属性 dev.AddNETWORK_USER=devUser dev.ADDPASS=devPass sit.AddNETWORK_USER=situser sit.ADDPASS=sitPass 这需要在mule.pro

我想开发ant脚本,用特定于环境的属性替换应用程序属性。我的要求是将所有环境属性保存在一个
env.properties
文件中。在构建应用程序期间,我需要替换为
env.properties
文件中的任何内容。当我有每个环境的属性文件时,Ant replace工作得很好

示例:环境属性

dev.AddNETWORK_USER=devUser
dev.ADDPASS=devPass
sit.AddNETWORK_USER=situser
sit.ADDPASS=sitPass
这需要在
mule.properties
中替换为 对于开发环境:

dev.AddNETWORK_USER=devUser
dev.ADDPASS=devPass
AddNETWORK_USER=sitUser
ADDPASS=sitPass
对于SIT环境:

dev.AddNETWORK_USER=devUser
dev.ADDPASS=devPass
AddNETWORK_USER=sitUser
ADDPASS=sitPass

您可以在env.properties文件上使用property ant任务。这允许根据您的需要访问key=value对。您可以将特定于环境的属性重定向到所需的文件,也可以将其写入一个特定的文件

 <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>

您可以在env.properties文件上使用property ant任务。这允许根据您的需要访问key=value对。您可以将特定于环境的属性重定向到所需的文件,也可以将其写入一个特定的文件

 <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>


我已经检查过那篇文章了,可能是重复的。这对我也很有效。但是,如果我需要为所有环境提供一个属性文件,为什么要使解决方案更复杂?问题是ANT不支持嵌套的属性名,例如:${${ENV}.AddNETWORK_USER}可能与我已经检查过的帖子重复。这对我也很有效。但是,如果我需要为所有环境提供一个属性文件,为什么要使解决方案更复杂?问题是ANT不支持嵌套的属性名,例如:${${ENV}.AddNETWORK\u USER}