2011-02-28 4 views
5

Une petite question: J'aime le look de ce bit de Ant:Comment puis-je extraire les fichiers .class de fichiers .jar?

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

donc je pourrais utiliser par exemple de copier quelques fichiers .jar de $ {} lib qui myPattern match.

si ce que je veux vraiment est de regarder dans chaque .jar dans $ {} lib et sélectionnez uniquement les fichiers .class qui correspondent myPattern?

Répondre

9

La tâche unjar fait à peu près ce que vous voulez ici hors de la boîte. Utilisez un fileset pour spécifier les fichiers jar que vous voulez extraire, et un patternset pour spécifier les fichiers à extraire.

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

Je suis sûr que vous aurez besoin de décompresser le package jarres puis effectuez la copie des fichiers de classe.

0

Cela devrait fonctionner avec For task de antcontrib

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

Vous pouvez utiliser la collection de ressources archives pour extraire plusieurs fichiers à partir de plusieurs archives:

<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> 
Questions connexes