我有属性
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
标题>