2013-05-15 11 views
9

Sto utilizzando il plug-in Maven per assemblare i file binari del mio progetto Java in un jar fat (con il descrittore jar-with-dependencies). Funziona piuttosto bene.Maven: Distribuisci il codice sorgente con jar-with-dependencies

Domanda: Come posso includere anche i file di origine del mio progetto insieme ai file di classe compilati? Ho cercato di esaminare la documentazione di Maven per scoprire come farlo ma non ho trovato nulla.

Grazie!

mio pom.xml si presenta così:

<project> 
... 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <configuration> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
        <finalName>${pom.artifactId}-${pom.version}</finalName> 
        <appendAssemblyId>false</appendAssemblyId> 
        <outputDirectory>${project.basedir}/bin/</outputDirectory> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

risposta

6

La soluzione più semplice è quella di utilizzare il descrittore predefinito src o potrebbe essere meglio usare il descrittore predefinito project:

<descriptorRefs> 
    <descriptorRef>jar-with-dependencies</descriptorRef> 
    <descriptorRef>src</descriptorRef> 
    </descriptorRefs> 

o un l'altra opzione sarebbe come questa:

<descriptorRefs> 
    <descriptorRef>jar-with-dependencies</descriptorRef> 
    <descriptorRef>project</descriptorRef> 
    </descriptorRefs> 
+0

Grazie! Questo non è esattamente quello che avevo in mente, visto che avevo in programma di pacchettizzare le fonti nello stesso barattolo, ma questo è probabilmente del tutto sufficiente o migliore. – Johannes

+0

Dipende un po '. Suggerirei di farlo solo in caso di rilascio e utilizzare il plugin maven-source per tali scopi nella configurazione di rilascio nella tua azienda pom. Questo può essere migliorato per creare il pacchetto sorgenti con ogni distribuzione SNAPSHOT. È il tuo turno di scegliere quale è il modo in cui ti piace andare. – khmarbaise

3

È come requisito fondamentale che si sceglie di distribuire i binari e il codice sorgente come un barattolo di grasso? Normalmente, i file binari e di origine sono distribuiti insieme, ma come file jar separati. Molti progetti su Maven Central stanno usando questo approccio e anche repository come Nexus e Artifactory supportano questo. Se scegli questa opzione, il maven-source-plugin è tuo amico. Dal documentation:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-source-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>attach-sources</id> 
     <goals> 
     <goal>jar</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

E poi eseguire mvn source:jar. Vedi la pagina web per configuration options.

+0

Grazie per il suggerimento! L'uso del descrittore src del plugin assembly come indicato da hkmarbaise sembra un po 'più semplice, in quanto non necessita di un plugin aggiuntivo. – Johannes