2010-09-23 9 views
6

Estoy usando ant para generar el MANIFEST.MF para un .jar, y tengo que agregar varios manifiestos <section> bloques basados ​​en una lista de archivos en un directorio. Sin embargo, necesito automatizar el proceso para hacer esto en tiempo de compilación ya que la lista cambiará entre desarrollo e implementación.¿Automatizar agregar múltiples "secciones" al manifiesto?

Por ejemplo:

<manifest file="MANIFEST.MF"> 
    <foreach files="./*"> 
    <section name="section"> 
     <attribute name="Attribute-Name" value="$file"/> 
    </section> 
    </foreach> 
</manifest> 

He mirado en foreach de Ant-contrib, pero no se ve como que va a trabajar en este caso.

¿Esto es posible?

+0

¿Qué quiere decir por secciones? –

+0

¿podría insertar un ejemplo de salida de manifiesto para, por ejemplo, dos archivos de entrada en el directorio entrante? (Me pregunto específicamente si desea que el nombre de la sección sea el mismo para cada archivo u otra cosa) –

Respuesta

4

Puede hacer esto con la Manifest task

<manifest file="MANIFEST.MF"> 
    <section name="section"> 
     <attribute name="Attribute-Name" value="value"/> 
    </section> 
    <section name="section/class1.class"> 
     <attribute name="Second-Attribute-Name" value="otherValue"/> 
    </section> 
</manifest> 

Se generará este manifiesto:

Manifiesto-Version: 1.0
Creado-By: Apache Ant 1.7

Nombre: sección
Nombre del atributo: valor

Nombre: Sección/class1.class
Segundo-Atributo-Nombre: otherValue

Puede mantener dos tareas diferentes personalizados para manejar los diferentes casos, y llamar a la correcta en el momento correcto.


Para una gestión "automático":

<target name="manifest-generation"> 
    <foreach param="file" target="manifest"> 
     <path> 
      <fileset dir="."> 
       <include name="**/*.class"/> 
      </fileset> 
     </path> 
    </foreach> 
</target> 

<target name="manifest"> 
    <manifest file="MANIFEST.MF" mode="update"> 
     <section name="${file}"> 
      <attribute name="Attribute-Name" value="value"/> 
     </section> 
    </manifest> 
</target> 
+0

si esto no es lo suficientemente flexible, entonces es muy probable que necesite escribir su propia tarea personalizada –

+0

Sí, lo sé puede hacerlo manualmente, pero eso no es lo que estoy preguntando. Pregunto cómo ** automatizar ** agregar múltiples secciones basadas en archivos en el sistema de archivos. –

+0

Entonces, ¿qué quiere decir con "automatizar"? ¿Qué resultado quieres? –

Cuestiones relacionadas