2011-04-08 10 views
5

Tengo un problema con el complemento de ensamblaje de maven.Fusionar archivos de propiedades con ensamblaje de Maven

Tengo un proyecto maven que usa varios frascos. Cada jar contiene archivos de configuración. Con otro proyecto, utilizo el complemento de ensamblaje maven para ensamblar todas las configuraciones en un único contenedor.

Todo funciona bien, pero desafortunadamente, dos archivos tienen el mismo nombre y el segundo sobrescribe el primero.

No logro decirle a maven que combine los dos archivos en lugar de sobrescribir.

¿Alguien sabe cómo hacer eso?

Gracias.

Respuesta

0

Podría intentar cambiar el nombre del primer archivo y fusionar los dos archivos después de eso.

Aquí hay un hilo en stackoverflow, donde se documentated el cambio de nombre de un archivo de este tipo: Renaming resources in Maven

+0

Ok, puede cambiar el nombre del archivo, pero ¿cómo fusionarlo después de eso? Con plugin de ensamblaje si es posible. – Kiva

8

El maven-shade-plugin combinado con el AppendTransformer debe hacer lo que quiera.

Lo usamos para combinar los archivos de propiedades de dos proyectos zip, definidos como módulos maven separados, en un solo archivo zip. Esto crea el superconjunto de los archivos y directorios de los dos módulos y fusiona el archivo de propiedades especificado. También definimos el módulo para fusionarlo como una dependencia del módulo maven que realiza la fusión.

Algo como esto debe hacer el truco:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-shade-plugin</artifactId> 
     <version>1.4</version> 
     <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
     <goal>shade</goal> 
      </goals> 
      <configuration> 
     <filters> 
      <filter> 
      <artifact>groupname:artifactname</artifact> 
      <includes> 
       <include>**/*</include> 
      </includes> 
      </filter> 
     </filters> 
     <transformers> 
      <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
      <resource>propertyfiletomerge.properties</resource> 
      </transformer> 
     </transformers> 
      </configuration> 
     </execution> 
     </executions> 
    </plugin> 
0

Sobre la base de la respuesta de Skarab, aquí está el código que utiliza para resolver este problema mediante el maven-antrun-plugin:

<project> 
... 
<build> 
    ... 
    <plugins> 
     ... 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.8</version> 
      <executions> 
       <execution> 
       <phase>prepare-package</phase> 
       <configuration> 

        <target> 
         <concat destfile="${project.build.directory}/setup_db.sql"> 
          <fileset file="${project.basedir}/src/main/resources/db/sql_one/*.sql" /> 
          <fileset file="${project.basedir}/src/main/resources/db/sql_another/*.sql" /> 
         </concat> 
        </target> 

       </configuration> 
       <goals> 
        <goal>run</goal> 
       </goals> 
       </execution> 
      </executions> 
     </plugin> 
     ... 
    </plugins> 
</build> 

Cuestiones relacionadas