2010-04-23 19 views
10

Tengo un proyecto de varios módulos y quiero crear un único contenedor que contenga las clases de todos mis módulos. Dentro de mi padre POM, declaré el siguiente plugin:maven: ensamblado de proyecto de varios módulos en un solo contenedor

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

Sin embargo, cuando se ejecuta el montaje mvn: montaje, sólo la fuente de la carpeta principal (vacío) están incluidos. ¿Cómo incluyo las fuentes de mis módulos en el archivo?

+0

han encontrado un camino? – aurelius

Respuesta

0

El predefinido bin no funcionará aquí. Tendrá que utilizar un descriptor personalizado similar al descriptor predefinido bin, pero que declara moduleSet para incluir sus módulos de proyecto.

6

creo que busca el plugin de Maven Shade:

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

Paquetes cualquier número de dependencias en un paquete súper depenency. Esto se puede implementar en un repositorio.

+0

Agregar un proyecto secundario dependiendo de los otros proyectos secundarios (asegúrese de que estén todos incluidos) hizo el truco. Declare el sombreado: ejecución de sombreado en el proyecto hijo, configurado con un solo incluir para todos los artefactos en el grupo de varios módulos. Ver http://maven.apache.org/plugins/maven-shade-plugin/examples/includes-excludes.html para más detalles. –

1

para empaquetar las clases de todos los módulos de un solo frasco hice lo siguiente:

  1. módulo adicional creada que se utiliza solamente para el embalaje de los contenidos de todos los otros módulos a un solo frasco. Esto generalmente se refiere como un módulo de ensamblaje . Intente llamar a este módulo igual que el archivo jar de destino.

  2. En pom.xml de este nuevo módulo agregué maven-assemby-plugin. Este complemento empaqueta todas las clases y las coloca en un solo archivo. Utiliza archivo de configuración adicional (etapa 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 de este nuevo módulo también añadí dependencias a todos los demás módulos que incluyen pom padres. Solo los módulos incluidos en las dependencias se empaquetarán en el archivo jar de destino.

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

4.Finally creé descriptor de montaje en el módulo de montaje (archivo: src/main/ensamblar/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> 
Cuestiones relacionadas