2011-02-28 637 views
5

Una pregunta rápida: me gusta el aspecto de este trozo de Ant:¿Cómo puedo extraer archivos .class de archivos .jar?

<fileset dir="${lib}"> 
    <patternset refid="myPattern" /> 
</fileset> 

para poder usar este ejemplo para copiar algunos archivos .jar de $ {lib} que coincidan con myPattern.

¿Qué sucede si lo que realmente quiero es examinar cada .jar en $ {lib} y seleccionar solo archivos .class que coincidan con myPattern?

Respuesta

9

La tarea de antcontrib unjar hace bastante más de lo que usted quiere aquí fuera de la caja. Use un fileset para especificar los archivos jar que desea extraer, y un patternset para especificar qué archivos extraer.

<unjar dest="${dest.dir}"> 
    <patternset refid="myPattern" /> 
    <fileset dir="${lib}" includes="*.jar" /> 
</unjar> 
0

Estoy bastante seguro de que tendrías que destrabar los frascos y luego hacer la copia de los archivos de la clase.

0

Esto debería funcionar con For task

<for param="file"> 
    <path> 
    <fileset dir="${lib}" includes="*.jar"/> 
    </path> 
    <sequential> 
    <unjar src="@{file}" dest="${dest}"> 
     <patternset refid="myPattern> 
    </unjar> 
    </sequential> 
</for> 
1

Usted puede usar la colección de recursos archives para extraer varios archivos desde múltiples archivos:

<copy todir="somedir"> 
    <restrict> 
     <!-- This is just an example, you can use any restriction --> 
     <name name="somePattern"/> 
      <archives> 
       <zips> 
        <fileset dir="${lib}" includes="**/*.jar" /> 
       </zips> 
     </archives> 
    </restrict> 
</copy> 
Cuestiones relacionadas