Fusionner des fichiers de propriétés avec Maven assembly

j'ai un problème avec le plugin Maven assembly.

j'ai un projet maven qui utilise plusieurs pots. Chaque pot contient des fichiers de configuration. Avec un autre projet, j'utilise Maven assembly plugin pour assembler toutes les configurations dans un jar unique.

tout fonctionne bien, mais malheureusement, deux fichiers sont le même nom et le second écrira le premier.

Je n'arrive pas à dire à maven de fusionner les deux fichiers au lieu de les écraser.

Quelqu'un sait faire ça ?

Merci.

7
demandé sur Ralph 2011-04-08 20:52:52

4 réponses

Ce n'est pas exactement ce que vous cherchez, mais je voudrais les utiliser http://maven.apache.org/plugins/maven-antrun-plugin/ plugin pour exécuter ant concat tâche http://ant.apache.org/manual/Tasks/concat.html fusionner les fichiers. Je lancerais le maven-antrun dans la phase prepare-package .

4
répondu Skarab 2011-04-08 17:49:50

le maven-shade-plugin combiné avec le transformateur D'appendices devrait faire ce que vous voulez.

nous l'utilisons pour fusionner les fichiers de propriétés de deux projets zip, définis comme des modules maven séparés, en un seul fichier zip. Cela crée le super-ensemble des fichiers et des répertoires des deux modules et fusionne le fichier de propriétés spécifié. Nous définissons également le module à fusionner comme une dépendance du module maven fusionner.

quelque Chose comme ça devrait faire l'affaire:

<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>
8
répondu Jon Denly 2011-06-01 00:41:29

vous pourriez essayer de renommer le premier fichier et fusionner les deux fichiers après cela.

voici un Thread sur stackoverflow, où le renommage d'un tel fichier est documentée: renommer les ressources en Maven

0
répondu L.Butz 2017-05-23 11:46:08

basé sur la réponse de Skarab, voici le code que j'ai utilisé pour résoudre ce problème en utilisant le 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>

0
répondu Vincent 2017-08-04 13:22:39