不能替换属性文件中分隔的令牌



我有属性

environment.dir=c:templocation
environmentconfig.dir=c:templocation\config
finalLocation.dir=c:finalLocation

这些由一组ant脚本生成到属性文件中,属性文件的值由系统自动分隔。我不能更改这些脚本。因此,
propFileToChange。属性=

environment.dir=c:\templocation
environmentconfig.dir=c:\templocation\config
finalLocation.dir=c:\finalLocation

我想取代环境。生成文件中的所有属性的Dir值与另一个属性。然而,我不知道如何处理分隔的文本。我想要的结果:

environment.dir=c:\finalLocation
environmentconfig.dir=c:\finalLocation\config

我试过:

<replace file="propFileToChange.properties" token="${environment.dir}" value="c:\finalLocation" />

我试过:

<propertyfile file="temp.properties">
    <entry key="${environment.dir}" value="c:\finallocation"
</propertyfile>
<replace file="propFileToChange.properties" replacefilterfile="temp.properties" summary="true" />

似乎找不到令牌,因为属性文件的内容被分隔了。那么,在寻找标记之前,是否有某种方法可以将其分隔?

替换任务用于替换源文件中的令牌。标记通常以@开头和结尾,标记要替换的文本。

例如:

environment.dir=@environment.dir@
environmentconfig.dir=@environmentconfig.dir@
finalLocation.dir=@finalLocation.dir@

在你的情况下,源文件没有可识别的令牌,但我们可以按如下方式制造它们:

<copy file="propFileToChange.properties" tofile="build.properties" overwrite="true">
  <filterset begintoken="c:\" endtoken="location">
    <filter token="temp" value="c:\finalLocation"/>
  </filterset>
</copy>

这里我指定令牌"temp"以字符串"c:"开始,以"location"结束。这意味着它将执行以下所需的替换。

<标题> 例子
├── build.properties
├── build.xml
└── propFileToChange.properties

build . xml

<project name="demo" default="replace">
  <target name="replace">
    <copy file="propFileToChange.properties" tofile="build.properties" overwrite="true">
      <filterset begintoken="c:\" endtoken="location">
        <filter token="temp" value="c:\finalLocation"/>
      </filterset>
    </copy>
  </target>
</project>

propFileToChange.properties

environment.dir=c:\templocation
environmentconfig.dir=c:\templocation\config
finalLocation.dir=c:\finalLocation

的build . properties

environment.dir=c:\finalLocation
environmentconfig.dir=c:\finalLocation\config
finalLocation.dir=c:\finalLocation

相关内容

  • 没有找到相关文章

最新更新