2010-09-23 14 views
6

J'utilise ant pour générer le MANIFEST.MF pour un fichier .jar, et j'ai besoin d'ajouter plusieurs blocs manifestes <section> en fonction d'une liste de fichiers dans un répertoire. Cependant, j'ai besoin d'automatiser le processus pour le faire au moment de la construction puisque la liste va changer entre le développement et le déploiement.Automatiser l'ajout de plusieurs "sections" au manifeste?

Par exemple:

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

Je l'ai regardé foreach de Ant-contrib mais il ne ressemble pas à cela fonctionnera dans ce cas.

Est-ce possible?

+0

Que voulez-vous dire par sections? –

+0

pourriez-vous éventuellement insérer un exemple de sortie manifeste pour, disons, deux fichiers d'entrée dans le répertoire entrant? (Je me demande spécifiquement si vous voulez que le nom de section soit le même pour chaque fichier, ou autre chose?) –

Répondre

4

Vous pouvez le faire avec le 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> 

Il va générer ce manifeste:

Manifest-Version: 1.0
Créé-By: Apache Ant 1.7

Nom: section
Attribut-Name: value

Nom: section/class1.class
Deuxième nom_attribut: autreValeur

Vous pouvez gérer deux tâches personnalisées différentes pour gérer les différents cas et appeler la bonne au bon moment.


Pour une gestion "automatique":

<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 ce n'est pas assez flexible, alors vous avez probablement besoin d'écrire votre propre tâche personnalisée –

+0

Oui, je sais que je peut le faire manuellement, mais ce n'est pas ce que je demande. Je demande comment ** automatiser ** l'ajout de plusieurs sections en fonction des fichiers dans le système de fichiers. –

+0

Alors qu'entendez-vous par "automatiser"? Quel résultat veux-tu? –