Question

J'ai un ensemble de fichiers (qui est renvoyé par la tâche Maven Ant), et il contient tous les fichiers jar que je dois remballer. Cet ensemble de fichiers est référencé par un refid. Je veux seulement inclure nos propres pots, alors j'aimerais filtrer cela. Mais les ensembles de fichiers Ant ne prennent en charge d’autres attributs ou balises imbriquées si un refid est utilisé.

Par exemple, si le groupe de fichiers est:

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

et je veux avoir un ensemble de fichiers qui ne contient que

org.foo*.jar

Comment ferais-je cela?

Était-ce utile?

La solution

Essayez d'utiliser une ressource restrict . collection, que vous pouvez utiliser comme un ensemble de fichiers dans toute tâche utilisant des collections de ressources pour sélectionner les groupes de fichiers sur lesquels opérer.

Par exemple, pour un ensemble de fichiers renvoyé depuis votre tâche Maven référencée via un identifiant appelé dependency.fileset , vous pouvez déclarer une collection de ressources restrict . comme si:

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

Notez que vous devez déclarer l'espace de noms du sélecteur de ressources car il ne fait pas partie de l'espace de noms Ant intégré:

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

À partir de là, vous pouvez référencer votre collection de ressources restreindre de la même manière que vous feriez pour référencer votre ensemble de fichiers . Par exemple, pour créer des sauvegardes de votre ensemble filtré de fichiers:

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

Vous pouvez bien sûr intégrer votre collection de ressources restreindre si vous le souhaitez:

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

Consultez la documentation Ant sur les collections de ressources pour plus d'informations. informations.

Autres conseils

Je pense que vous devrez écrire une tâche de fourmi pour cela. Ils sont assez faciles à écrire cependant.

Voir http://ant.apache.org/manual/develop.html# Écrire une tâche

Dans votre tâche, vous devrez appeler getProject () et lui demander de vous donner l'ensemble de fichiers, de le parcourir et d'en créer un nouveau.

J'utilise Ant avec Ivy . Avec l'aide de Ivy, il est possible de filtrer les dépendances pour la récupération, avec le code suivant dans 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"/>

Peut-être un coup d’œil sur la source Ivy vous aidera?

Si vous utilisez une version suffisamment récente de Ant et du JDK, par exemple Ant 1.7 et JDK 6, vous pouvez utiliser tâche de script facultative pour faire ce que vous voulez. (Les versions antérieures peuvent également fonctionner.) La page à laquelle j'ai lié, si vous faites défiler jusqu'au texte "L'objectif est de répertorier la taille du fichier". alors vous verrez un exemple de script qui crée un ensemble de fichiers.

Ce n’est pas pour les âmes sensibles, et une tâche personnalisée que vous écrivez vous-même sera probablement plus flexible. Mais je voulais souligner l'option.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top