2009-01-09 5 views
8

AUSGESCHLOSSEN Wenn ich einen fileset wie diese:Wie eine Ameise haben ENTHALTEN fileset Vorrang vor einem

<fileset dir="."> 
    <exclude name="classes/*"/> 
    <include name="**/zar.class"/> 
</fileset> 

Die der Vorrang vor umfassen und ich am Ende nicht mit irgendwelchen Klassen ausschließen nimmt. [Da für dieses hypothetische Beispiel zar.class in den Klassen dir] ist, möchte ich die ZAR-Datei einschließen, obwohl sie in den Klassen dir enthalten ist.

Ich knallte meinen Kopf für eine Weile gegen diesen, las über Selektoren, Patternsets, Dateigruppen, versuchte Dateigruppen zu kombinieren, aber konnte es nicht funktionieren.

Wer weiß, wie man das macht?

Antwort

2

Ich bin nicht sicher genau, was Sie wollen, aber ich denke, Sie auf dem richtigen Weg bei pattersets Suche waren: Wie wäre es:

<patternset id="a"> 
    <exclude name="classes/*"/> 
</patternset> 

<patternset id="b"> 
    <include name="**/zar.class"/> 
</patternset> 

<fileset dir="."> 
    <patternset refid="a" /> 
    <patternset refid="b" /> 
</fileset> 
4

Warum müssen Sie das Element ausschließen?

<fileset dir="."> 
    <include name="**/zar.class"/> 
</fileset> 

sollte man den genauen Satz von Dateien geben Sie nach sind: zar.class, und keiner von den anderen .class Dateien in Klassen /. setzen diese


Just in Community Wiki-Modus, weil ich nicht sicher bin, auf den zweiten Gedanken, dass es tatsächlich ist, was Sie nach:
Sie alles wollen, einschließlich Klassen /.../ zar.class, außer classes/....

Meine Lösung würde Ihnen nur zar.class geben.

Bitte hinterlassen Sie einen Kommentar: Wenn das keine gute Lösung ist, werde ich es entfernen.

1

Welche Version von Ant wurde in der ursprünglichen Frage verwendet?

Mit Ant 1.8.2 produziert die Strophe das gewünschte Ergebnis!?

<fileset dir="." id="some.fileset"> 
    <exclude name="build/classes/*" /> 
    <include name="**/A.class" /> 
</fileset> 

<target name="test"> 
    <pathconvert pathsep="${line.separator}" property="listed.fileset" refid="some.fileset"/> 
    <echo message="${listed.fileset}" /> 
</target> 

Pfad und Name etwas anders, aber die tun A.class zeigen, und nicht zeigen B.class, die es direkt neben ist.

Verwandte Themen