Frage

Ich habe eine fileset (die aus dem Maven Ant-Task zurückgegeben wird), und es enthält alle Gläser ich umpacken müssen. Diese fileset wird von einem refid verwiesen. Ich will nur unsere eigenen Gläser enthalten, so dass ich möchte, dass filtern. Aber Ant Dateigruppen unterstützen keine weiteren Attribute oder verschachtelte Tags, wenn ein refid verwendet wird.

Zum Beispiel, wenn die Dateigruppe ist:

org.foo.1.jar
org.foo.2.jar
log4j.jar

und ich möchte eine fileset haben, die nur enthält

org.foo*.jar

Wie würde ich das tun?

War es hilfreich?

Lösung

Versuchen Sie, eine restrict Ressourcensammlung verwenden, die Sie verwenden können, wie ein fileset in jeder Aufgabe, die die Gruppen von Dateien auswählen Ressourcensammlungen verwendet für den Betrieb auf.

Zum Beispiel für eine fileset von Ihrem Maven Aufgabe über eine ID verwiesen zurück genannt dependency.fileset Sie eine restrict Ressourcensammlung erklären kann etwa so:

<restrict id="filtered.dependencies">
    <fileset refid="dependency.fileset"/>
    <rsel:name name="org.foo*.jar"/>
</restrict>

Hinweis: Sie müssen werden die Ressourcenauswahlnamespace deklarieren, da sie nicht Teil der integrierten in Ant-Namespace sind:

<project xmlns:rsel="antlib:org.apache.tools.ant.types.resources.selectors">
    ...
</project>

Von hier können Sie Ihre restrict Ressourcensammlung in ähnlicher Weise verweisen können, wie Sie Ihre fileset verweisen würde. Zum Beispiel Backups Ihren gefilterten Satzes von Dateien zu erstellen:

<copy todir=".">
    <restrict refid="filtered.dependencies"/>
    <globmapper from="*" to="*.bak"/>
</copy>

Natürlich können Sie Ihre restrict Ressourcensammlung inline, wenn Sie dies wünschen:

<copy todir=".">
    <restrict>
        <fileset refid="dependency.fileset"/>
        <rsel:name name="org.foo*.jar"/>
    </restrict>
    <globmapper from="*" to="*.bak"/>
</copy>

Haben Sie einen Blick auf die Ant-Dokumentation auf Ressourcensammlungen für weitere Informationen.

Andere Tipps

Ich denke, Sie brauchen eine Ameise Aufgabe dafür zu schreiben. Sie sind ziemlich einfach, obwohl zu schreiben.

Siehe http://ant.apache.org/manual/develop.html# writingowntask

Ihre Aufgabe, Sie rufen müssen getProject () und stellen es Ihnen die fileset zu geben, zu Fuß durch, und eine neue erstellen.

Ich verwende Ant mit Ivy . Mit Hilfe von Ivy ist es möglich, Abhängigkeiten für den Abruf zu filtern, mit dem folgenden Code in ivy.xml:

<dependency name="Project1" rev="latest.integration" transitive="true" conf="modlibs">
<exclude name="${exclusionRegEx}" matcher="regexp" />
</dependency>
<dependency name="Project2" rev="latest.integration" transitive="false" conf="modules"/>

Vielleicht ein kurzer Blick auf die Ivy Quelle ‚ll helfen?

Wenn Sie eine ausreichend aktuelle Version von Ant und das JDK verwenden, beispielsweise Ant 1.7 und JDK 6, dann können Sie die optional Skript Aufgabe zu tun, was Sie wollen. (Frühere Versionen könnten jedoch ebenfalls funktionieren.) Die Seite I verknüpft, wenn Sie den Text nach unten scrollen „Das Ziel, die Dateigrößen zur Liste ist“, dann werden Sie einen Beispielskript sehen, die eine Zeichnungs- erstellt.

Das ist nichts für schwache Nerven, und eine benutzerdefinierte ant Aufgabe, die Sie selbst schreiben wird wahrscheinlich flexibler sein. Aber ich wollte die Möglichkeit hinweisen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top