Domanda

Ho un set di file (che viene restituito dall'attività Maven Ant) e contiene tutti i barattoli che devo riconfezionare. Questo set di file fa riferimento a un refid. Voglio solo includere i nostri vasetti, quindi vorrei filtrarlo. Ma i set di file Ant non supportano ulteriori attributi o tag nidificati se viene utilizzato un refid.

Ad esempio, se il set di file è:

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

e voglio avere un set di file che contiene solo

org.foo*.jar

Come lo farei?

È stato utile?

Soluzione

Prova a utilizzare una risorsa restring raccolta, che puoi utilizzare come un set di file in qualsiasi attività che utilizza raccolte di risorse per selezionare i gruppi di file su cui operare.

Ad esempio, per un fileet restituito dall'attività Maven a cui si fa riferimento tramite un ID chiamato dependency.fileset è possibile dichiarare una raccolta di risorse restring in questo modo:

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

Nota che dovrai dichiarare lo spazio dei nomi del selettore di risorse in quanto non fa parte dello spazio dei nomi Ant incorporato:

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

Da qui puoi fare riferimento alla tua raccolta di risorse limit in modo simile a come faresti riferimento al tuo set di file . Ad esempio, per creare backup del set di file filtrati:

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

Ovviamente puoi incorporare la tua raccolta di risorse limit se lo desideri:

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

Dai un'occhiata alla documentazione di Ant su raccolte di risorse per ulteriori informazioni.

Altri suggerimenti

Penso che dovrai scrivere un'attività formica per quello. Sono abbastanza facili da scrivere però.

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

Nella tua attività, dovrai chiamare getProject () e chiedergli di darti il ??set di file, percorrerlo e crearne uno nuovo.

Sto usando Ant con Ivy . Con l'aiuto di Ivy è possibile filtrare le dipendenze per il recupero, con il seguente codice 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"/>

Forse una rapida occhiata alla fonte Ivy ti aiuterà?

Se si utilizza una versione sufficientemente recente di Ant e JDK, ad esempio Ant 1.7 e JDK 6, è possibile utilizzare attività di script facoltativa per fare ciò che desideri. (Potrebbero funzionare anche le versioni precedenti.) La pagina a cui mi sono collegato, se scorri verso il basso fino al testo "L'obiettivo è elencare le dimensioni dei file" quindi vedrai uno script di esempio che crea un set di file.

Questo non è per i deboli di cuore, e un compito di formica personalizzato che scrivi tu stesso sarà probabilmente più flessibile. Ma volevo sottolineare l'opzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top