2010-04-23 25 views
10

Ho un progetto multi-modulo e voglio creare un singolo vaso contenente le classi di tutti i miei moduli. Dentro il mio POM genitore, ho dichiarato il seguente plugin:maven: assemblaggio di progetti multi-modulo in vaso singolo

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-assembly-plugin</artifactId> 
<configuration> 
    <descriptorRefs> 
    <descriptorRef>bin</descriptorRef> 
    </descriptorRefs> 
</configuration> 
</plugin> 

Tuttavia, quando si esegue il montaggio mvn: assemblaggio, solo la fonte dalla cartella principale (vuoto) sono inclusi. Come posso includere i sorgenti dei miei moduli nell'archivio?

+0

hai trovato un modo? – aurelius

risposta

0

Il predefinito bin non farà il trucco qui. Dovrai utilizzare un descrittore personalizzato simile al descrittore bin predefinito ma che dichiara moduleSet di includere i moduli del progetto.

6

Penso che si sta cercando il plugin Maven Ombra:

http://maven.apache.org/plugins/maven-shade-plugin/index.html

Pacchetti da qualsiasi numero di dipendenze in un pacchetto di depenency uber. Questo può quindi essere distribuito in un repository.

+0

L'aggiunta di un progetto figlio a seconda degli altri progetti figlio (assicurarsi che siano tutti inclusi) ha funzionato. Dichiarare l'ombreggiatura: l'ombreggiatura nel progetto figlio, configurata con una sola inclusione per tutti gli artefatti sotto il gruppo multi-modulo. Vedi http://maven.apache.org/plugins/maven-shade-plugin/examples/includes-excludes.html per i dettagli. –

1

per confezionare classi da tutti i moduli di un singolo barattolo feci seguente:

  1. modulo aggiuntivo generato che è utilizzata solo per imballaggio contenuti di tutti gli altri moduli di un singolo barattolo. Di solito è indicato come un modulo di assemblaggio . Prova a chiamare questo modulo come file jar di destinazione.

  2. In pom.xml di questo nuovo modulo ho aggiunto maven-assemby-plugin. Questo plugin raggruppa tutte le classi e le inserisce in un singolo file. Esso utilizza file di configurazione aggiuntiva (punto 4.)

<build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.4</version> 
     <executions> 
      <execution> 
      <id>go-framework-assemby</id> 
      <phase>package</phase><!-- create assembly in package phase (invoke 'single' goal on assemby plugin)--> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      <configuration> 
       <descriptors> 
       <descriptor>src/main/assemble/framework_bin.xml</descriptor> 
       </descriptors> 
        <finalName>framework</finalName> 
        <appendAssemblyId>false</appendAssemblyId> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 

3.In pom.xml di questo nuovo modulo Ho anche aggiunto le dipendenze di tutti gli altri moduli, tra cui pom genitore. Solo i moduli inclusi nelle dipendenze saranno imballati nel file jar di destinazione.

<dependencies> 
    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>fwk-bam</artifactId> 
     <version>${project.version}</version> 
    </dependency>... 

4.Finally ho creato descrittore di montaggio nel modulo di montaggio (file: src/main/assemblaggio/framework_bin.xml)

<assembly 
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> 
    <id>all-jar</id> 
    <formats> 
     <format>jar</format> <!-- the result is a jar file --> 
    </formats> 

    <includeBaseDirectory>false</includeBaseDirectory> <!-- strip the module prefixes --> 

    <dependencySets> 
     <dependencySet> 
      <unpack>true</unpack> <!-- unpack , then repack the jars --> 
      <useTransitiveDependencies>false</useTransitiveDependencies> <!-- do not pull in any transitive dependencies --> 
     </dependencySet> 
    </dependencySets> 
</assembly> 
Problemi correlati