我需要将属性文件中一个属性的值复制到第二个属性中,并将其添加到属性文件中。
例如,如果我有一个包含以下内容的属性文件Test.properties
2018=jan;feb;mar
2019=jan;feb;mar
2020=jan;feb;mar
********************************
name=john,math,sudha
运行Ant Test.properties后,我的输入属性为“ 2020”,输出为“ 2021”
2018=jan;feb;mar
2019=jan;feb;mar
2020=jan;feb;mar
2021=jan;feb;mar
********************************
name=john,math,sudha
不更改顺序怎么办?
答案 0 :(得分:0)
您可能可以根据以下条件使用某些东西:
想法是读取属性文件,然后将两个<propertyset>
实例与<echoproperties>
task一起使用来更新文件。
<property name="prop.file" value="Test.properties" />
<property name="input" value="2020" />
<property name="output" value="2021" />
<property name="pf" value="prefix" />
<property name="input.prop" value="${pf}.${input}" />
<loadproperties srcfile="${prop.file}" prefix="${pf}" />
<echoproperties destfile="${prop.file}">
<propertyset>
<propertyref prefix="${pf}" />
<mapper type="glob" from="${pf}.*" to="*" />
</propertyset>
<propertyset>
<propertyref name="${input.prop}" />
<mapper type="glob" from="${input.prop}*" to="${output}*" />
</propertyset>
</echoproperties>
那里的代码比您预期的要多:“前缀”用于确保从文件加载的属性不会与Ant构建文件中的任何属性发生冲突,因为属性是不可更改的。
propertysets
任务中echoproperties
的顺序很重要,特别是如果要更新的文件中已经有属性“ 2021”的值。在两个集合中都出现属性的地方,最后一个属性集中的值“获胜”并回显到输出文件。
答案 1 :(得分:0)
<property name="prop.file" value="test.properties" />
<property name="input" value="2020" />
<property name="output" value="2021" />
<replaceregexp file="${prop.file}"
match="${input}(=)(.*)"
replace="${input}=\2${line.separator}${output}=\2"
flags="gi"
byline="true" />