2011-02-09 14 views
8

Ho un progetto java mavenized (Maven2) che voglio creare in un jar, che è abbastanza semplice fornendo il descrittore di jar-with-descriptorRef in il pom.xml.creazione di un barattolo e inclusione in un zip con maven-assembly-plugin

Tuttavia, devo anche distribuire il mio progetto in un file zip con alcuni file .exe e .bat, tra gli altri, da una cartella bin che chiama il jar. (Sto usando Tanuki ma non importa per il caso d'uso che penso)

In altre parole, ho bisogno di una build in cui prima le mie fonti (e dipendenze) sono impacchettate in un barattolo e quel barattolo viene poi inserito un file zip con alcuni file aggiuntivi dalla cartella bin.

Cosa devo inserire nel mio pom.xml e 'assembly'.xml?

risposta

8

Maven-assembly-plugin è lo strumento giusto per farlo.

Devi dichiarare questo plugin nella sezione "build" del tuo pom e per creare un altro file di configurazione "assembly.xml" nella radice del tuo progetto. In questo file, definirai il contenuto del tuo file zip.

Le opzioni di configurazione sono descritte sul sito ufficiale: http://maven.apache.org/plugins/maven-assembly-plugin/

Ecco un esempio di configurazione di base di questo plugin che dovrebbe soddisfare le vostre esigenze.

POM config:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <finalName>zipfile</finalName> 
     <descriptors> 
      <descriptor>${basedir}/assembly.xml</descriptor> 
     </descriptors> 
    </configuration> 
    <executions> 
     <execution> 
      <id>make-assembly</id> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

Assemblea config:

<assembly> 
    <formats> 
     <format>zip</format> 
    </formats> 

    <fileSets> 
     <fileSet> 
      <directory>to_complete</directory> 
      <outputDirectory /> 
      <includes> 
       <include>**/*.jar</include> 
       <include>**/*.bat</include> 
       <include>**/*.exe</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</assembly> 
+0

Grazie per la risposta, è stato il calcio d'inizio cruciale avevo bisogno di farlo funzionare. – NomeN

+1

Ho dovuto aggiungere un altro descrittore che faccia il mio barattolo. In realtà ho appena copiato il formato descrittore jar-with-dependencies dal sito che hai menzionato, poiché l'uso del descrittore delle dipendenze jar-with-refrip ha avvolto il build zip. cioè costruisce il barattolo 'sic' prima poi lo zip e poi il file with-dependencies.jar, che costruisce un zip con il primo (inutile) barattolo ma senza il secondo, strano vero ?! – NomeN

Problemi correlati