2016-04-22 3 views
1

In unserem Projekt verwenden wir Ant, um Dateien zu verteilen. Es gibt eine Hierarchie von Dateien, und sie überschreiben Dateien von früherer Ebene. Wie folgt: default - level1 - level2. Derzeit ist es die Art und Weise hergestellt:Gewährleistet Ant die Reihenfolge der Dateigruppen?

<copy todir="..."> 
<fileset dir="${root}/default" includes="**/*" excludes="file1" /> 
<fileset dir="${root}/level1" includes="**/*" /> 
<fileset dir="${root}/level2" includes="**/*" excludes="file2"/> 
</copy> 

So erwarten wir, dass alle Ordner-Datei mit dem gleichen Namen enthalten, wird es von Level2-Verzeichnis genommen werden.

Vor nicht langer Zeit sind wir in eine neue Build-Box mit einer anderen Version von Java umgezogen und haben festgestellt, dass die Reihenfolge der Dateigruppen nicht korrekt ist.

Gibt es eine Möglichkeit, dieses Problem zu beheben, ohne ant-Konfigurationsdateien zu ändern? Wir haben eine große Anzahl davon. Wenn es keinen Weg gibt, wie kann ich es billig bekommen? Vielen Dank.

+0

Informationen zu möglichen Lösungen finden Sie unter [Kopierauftrag] (http://stackoverflow.com/questions/32716398/ant-copy-copying-order). –

Antwort

1

Ich weiß nicht, ob die Reihenfolge der Dateigruppen garantiert ist, aber die Reihenfolge der Kopieraufgaben ist. So nach dem Vorschlag von this answer, könnte es eine gute Idee sein, mit mehreren Kopieraufgaben schreiben überschreiben = „true“:

<copy todir="..."> 
    <fileset dir="${root}/default" includes="**/*" excludes="file1" /> 
</copy> 
<copy todir="..."> 
    <fileset dir="${root}/level1" includes="**/*" overwrite="true" /> 
</copy> 
<copy todir="..."> 
    <fileset dir="${root}/level2" includes="**/*" excludes="file2" overwrite="true" /> 
</copy> 
1

Sie können rund um Ihre fileset s sort Ressourcensammlung wickeln und den Auftrag sicherzustellen, verwendet Kopieren Sie diesen Weg. Sortieren selbst mag nur eine einzelne Ressourcenauflistung als untergeordnetes Element, also müssen Sie die fileset in einen oder resources Container wickeln.

Siehe http://ant.apache.org/manual/Types/resources.html#sort

So etwas wie

<sort> 
    <resources> 
    <fileset dir="${root}/default" includes="**/*" excludes="file1" /> 
    <fileset dir="${root}/level1" includes="**/*" /> 
    <fileset dir="${root}/level2" includes="**/*" excludes="file2"/> 
    </resources> 
    <name/> 
</sort> 

die Dateien nach Namen zu sortieren.

+0

"sort erwartet genau eine verschachtelte Ressourcensammlung." - Ich kann nicht zwei Dateigruppen daran übergeben – awfun

+0

aber eine 'Union' von 'Dateisatz - oder wenn Sie für doppelte Namen eine' Ressourcen 'von' Dateisatz's interessiert. –

Verwandte Themen