Filtrar un conjunto de archivos al que se hace referencia usando un refid

StackOverflow https://stackoverflow.com/questions/607338

  •  03-07-2019
  •  | 
  •  

Pregunta

Tengo un conjunto de archivos (que se devuelve de la tarea de Maven Ant) y contiene todos los archivos que necesito volver a empaquetar. Este conjunto de archivos es referenciado por un refid. Solo quiero incluir nuestros propios frascos, así que me gustaría filtrar eso. Pero los conjuntos de archivos Ant no admiten ningún otro atributo o etiquetas anidadas si se utiliza un refid.

Por ejemplo, si el conjunto de archivos es:

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

y quiero tener un conjunto de archivos que contenga solo

org.foo*.jar

¿Cómo haría eso?

¿Fue útil?

Solución

Intente utilizar un restringir colección, que puede usar como un conjunto de archivos en cualquier tarea que use colecciones de recursos para seleccionar los grupos de archivos para operar.

Por ejemplo, para un fileset devuelto de su tarea de Maven a la que se hace referencia a través de un id llamado dependency.fileset puede declarar una colección de recursos restringir como asi:

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

Tenga en cuenta que deberá declarar el espacio de nombres del selector de recursos, ya que no forma parte del espacio de nombres Ant integrado:

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

Desde aquí puede hacer referencia a su colección de recursos restringir de manera similar a como haría referencia a su conjunto de archivos . Por ejemplo, para crear copias de seguridad de su conjunto de archivos filtrados:

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

Por supuesto, puede integrar su colección de recursos restringir si así lo desea:

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

Consulte la documentación de Ant en colecciones de recursos para más información. información.

Otros consejos

Creo que necesitarás escribir una tarea de hormigas para eso. Aunque son bastante fáciles de escribir.

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

En tu tarea, deberás llamar a getProject () y pedirle que te proporcione el conjunto de archivos, recorrerlo y crear uno nuevo.

Estoy usando Ant con Ivy . Con la ayuda de Ivy es posible filtrar las dependencias para su recuperación, con el siguiente código en 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"/>

¿Tal vez un vistazo rápido a la fuente de Ivy ayude?

Si está utilizando una versión suficientemente reciente de Ant y JDK, por ejemplo, Ant 1.7 y JDK 6, puede usar tarea de script opcional para hacer lo que quiera. (Las versiones anteriores también pueden funcionar.) La página a la que me he vinculado, si se desplaza hacia abajo en el texto " El objetivo es enumerar los tamaños de archivo " luego verá una secuencia de comandos de ejemplo que crea un conjunto de archivos.

Esto no es para los débiles de corazón, y una tarea de hormigas personalizada que escriba usted probablemente será más flexible. Pero quería señalar la opción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top