web-dev-qa-db-fra.com

l'assemblage maven inclut le pot de projet actuel dans le Zip / tar final

J'utilise le plugin maven Assembly pour générer un .tar Le fichier contient plusieurs autres fichiers, des jars dépendants. Tous les fichiers sont copiés correctement dans les dossiers donnés dans la configuration Assembly.xml.

Je voudrais également inclure le bocal du projet d'origine dans le fichier tar final, mais je ne le vois pas actuellement.

Je reçois le message suivant lorsque j'émets Assembly:single objectif:

[AVERTISSEMENT] Impossible d'inclure l'artefact du projet: com.my.newpkg.project1: jar: 0.0.3.0; il n'a pas de fichier ou de répertoire associé.

Après avoir lu SO, il semble ajouter les configurations suivantes à pom.xml devrait ajouter le pot, mais n'obtient toujours pas le résultat attendu.

config dans pom.xml

<plugin>
   <groupId>org.Apache.maven.plugins</groupId>
   <artifactId>maven-jar-plugin</artifactId>
   <version>2.4</version>
   <configuration>
       <archive>
           <manifest>
               <mainClass>com.my.newpkg.project1.MainClass</mainClass>
               <addClasspath>true</addClasspath>
               <classpathPrefix>lib/</classpathPrefix>
           </manifest>
       </archive>
   </configuration>
</plugin>

extrait de Assembly.xml

<formats>
    <format>dir</format>
    <format>tar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
    <dependencySet>
        <outputDirectory>lib</outputDirectory>
        <excludes>
            <exclude>junit:junit</exclude>
        </excludes>
        <fileMode>0755</fileMode>
    </dependencySet>
</dependencySets>

Alors, les configs ne sont pas encore correctes? ou est-ce que je manque quelque chose ici?

Comment pouvons-nous ajouter le pot de projet actuel dans le tar final

29
mtk

Dans <dependencySet> vous pouvez exclure le fichier de projet en cours en disant <useProjectArtifact>false</useProjectArtifact>, mais c'est vrai par défaut, donc ça devrait marcher.

D'après l'avertissement, je suppose que vous avez oublié de faire mvn package d'abord, de sorte que le fichier jar n'est pas disponible dans le répertoire cible.

Ou faites mvn package Assembly:single en une seule commande.

Alternativement, ajoutez maven-Assembly-plugin dans votre pom et liez-le à la phase "package" afin qu'il se déclenche automatiquement sur mvn package:

   <plugin>
        <artifactId>maven-Assembly-plugin</artifactId>
        <executions>
          <execution>
            <id>tar-Assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <descriptors>
                <descriptor>etc/Assembly.xml</descriptor>
              </descriptors>
            </configuration>
          </execution>
        </executions>
      </plugin>
49
Geert Pante