diğer cevaplar tamam, ama ben bu sınırlamalar olmadan birini gerekli:
- tüm özelliklerini @ jeton @ (ilk yanıt)
- Mülkiyet genişleme ile şablon olarak belirtilmesi gerekliliği - Örneğin Yükler ve echos özellikleri
- EchoProperties'in (@ user2500146) herhangi bir çözümle genişletileceği prop2 = $ {prop1} özelliklerinin, URL özellikleri için rahatsız edici olan (Ant'in hatası değil, standart Java Properties'dir) karakterler gibi karakterlerden kaçmasını sağlar. izin hangi: = yerine) concat tabanlı çözümlerden
- Tekrarlanan özellikleri (2 tanım yok sayılır, çünkü bu, çalışır, ancak ben başvurmak zorunda sonunda tekrarlar
istemediğini de Bir filtrede javascript için, ama benim temel özellikler dosyasında tanımlı değillerse ve eğer sadece ana özellikler dosyasında tanımlanmamışlarsa benim çözümüm varsayılan özellikleri getiriyor .. belirsiz bir önek, sonra hedefe kopyalayın ve sonra , filtrelemeyi yaparken varsayılan özellikleri uydurun, ilk adımda yüklenen herhangi bir varsayılan özellik.
Bu harfi harfine kullanabilirsiniz ama mükemmel çalışıyor muhtemelen, günlük ifadeleri çıkarmak veya
<!-- merge the main.properties.file with the default.properties.file
into the output.properties.file (make sure these are defined) -->
<target name="merge">
<!--Obscure enough prefix to ensure the right props are handled-->
<property name="prefix" value="__MY_PREFIX__"/>
<!--Load the main properties so we can tell if the default is needed-->
<property prefix="${prefix}" file="${main.properties.file}"/>
<!--Copy the main properties, then append the defaults selectively-->
<copy file="${main.properties.file}" tofile="${output.properties.file}" overwrite="true"/>
<concat destfile="${output.properties.file}" append="true">
<fileset file="${default.properties.file}"/>
<filterchain>
<!--Filter out lines with properties that were already in the main properties -->
<scriptfilter language="javascript"> <![CDATA[
var line = self.getToken();
project.log("line: " + line);
var skipLine = false;
// lines that do not define properties are concatenated
if (line.indexOf("=") != -1) {
// get the property name from the line
var propName = line.substr(0, line.indexOf('='));
project.log("line prop: " + propName);
var loadedPropName = "__MY_PREFIX__" + propName;
if (project.getProperty(loadedPropName) != null) {
project.log("prop has original: " + project.getProperty(loadedPropName));
// skip this line, the property is defined
skipLine = true;
}
}
if (skipLine) {
project.log("skipping line: " + line);
self.setToken(null);
}
else {
// else leave the line in as it was
project.log("adding default line: " + line);
self.setToken(line);
}
]]> </scriptfilter>
</filterchain>
</concat>
</target>
Mark kendi cevap olarak doğru ikna inmez, ayıklama düzeye onları değiştirmek isteyeceksiniz. –