Ant使用JavaScript構建,您可能會嘗試。請參閱下面的插圖。
這使用<scriptdef>
創建一個任務"props2yaml"
,它將一組屬性寫入文件。我還沒有嘗試概括爲需要轉義序列字符等
<scriptdef name="props2yaml" language="javascript">
<attribute name="destfile"/>
<element name="propertyset" type="propertyset"/>
<![CDATA[
var destfile = attributes.get("destfile");
//var properties = project.getProperties();
//var prop_names = properties.keySet().toArray().sort();
var properties = elements.get("propertyset").get(0).getProperties();
var prop_names = properties.stringPropertyNames().toArray().sort();
var fw = new java.io.FileWriter(destfile);
for (var i in prop_names) {
fw.write(prop_names[i] + ': "' + properties.get(prop_names[i]) + '"\n');
}
fw.flush();
fw.close();
]]></scriptdef>
<property name="foo" value="aaa"/>
<property name="bar" value="bbb"/>
<property name="baz" value="ccc"/>
<props2yaml destfile="output.yml">
<propertyset>
<propertyref name="foo" />
<propertyref name="bar" />
<propertyref name="baz" />
</propertyset>
</props2yaml>
對我來說,在這種情況下,輸出是:
bar: "bbb"
baz: "ccc"
foo: "aaa"
你可以通過改變scriptdef您認爲合適的維持秩序。
註釋掉的行顯示如何獲取項目中所有Ant屬性的完整列表。
屬性名稱是否已知並且是靜態的?如果是這樣,也許你可以使用ant過濾來爲每個屬性設置curent值(http://ant.apache.org/manual/Tasks/filter.html) –