2011-06-10 5 views
3

Je souhaite remplacer un élément dans un fichier jar/zip existant lors de la construction de maven. Quel est le moyen le plus facile d'y parvenir? Je vous remercie.Maven - Remplacer un fichier dans un bocal

+0

Peut-être que vous devriez donner plus de détails, comme expliquer votre problème. Qui sait, il peut y avoir une solution sans avoir besoin de recourir à cela! – Raghuram

Répondre

7

Mon préféré pour ce genre de tâches est maven-antrun-plugin ce qui vous apporte une fonctionnalité complète ant.

Vous pouvez l'utiliser comme ceci:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.6</version> 
    <executions> 
     <execution> 
     <id>repack</id> 
     <phase>compile</phase> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     <configuration> 
      <target> 
      <!-- note that here we reference previously declared dependency --> 
      <unzip src="${org.apache:common-util:jar}" dest="${project.build.directory}/tmp"/> 
      <!-- now do what you need to any of unpacked files under target/tmp/ --> 
      <zip basedir="${project.build.directory}/tmp" destfile="${project.build.directory}/common-util-modified.jar"/> 
      <!-- now the modified jar is available --> 
      </target> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

Mais rappelez-vous - jamais de fichiers modifier dans votre dépôt local - dans cet exemple pointé par ${org.apache:common-util:jar}. Cela affecterait vos constructions ultérieures de tous vos projets sur le même ordinateur (= contre le même référentiel local).

De telles constructions sont également non reproductibles (ou difficiles à reproduire) sur d'autres machines.

+1

Je préfère même utiliser le plugin 'antrun' avec la commande' jar uf fichier-fichier d'entrée (s) 'comme décrit dans http://docs.oracle.com/javase/tutorial/deployment/jar/update.html – Vince

Questions connexes