Maven ombre plugin avertissement: nous avons un double - comment réparer?
C'est mon projet POM (lien à la pâte, de sorte que vous pouvez faire un clic droit > enregistrer sous pom.xml)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zybnet</groupId>
<artifactId>excel-reporter</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>mvn1</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.8</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>4.6.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>${project.build.sourceDirectory}</directory>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<finalName>${artifactId}-${version}-tmp</finalName>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.7.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.zybnet.Main</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
J'ai suivi les conseils de la configuration par défaut jar du plugin comme annoncé dans la FAQ, mais encore quand je lance mvn package
environ 20K des avertissements sont émis. L'exécution de mvn clean
n'aide pas non plus.
Selon cette réponse, j'ai pu exclure manuellement certaines dépendances. Cependant, je ne sais pas si c'est la bonne façon, et l'arbre des dépendances est plutôt complexe, il est donc difficile de soutenir par où commencer.
Je sais que ces questions ne sont pas dangereux, mais je suis utilisé pour traiter les avertissements comme quelque chose qui doit être fixe. De plus, je suis un débutant avec Maven, donc j'aimerais comprendre quel est le problème avec ma compréhension, et comment résoudre les problèmes.
(À l'aide de maven assembly plugin n'est pas une option ici)
Vous devez vous connecter pour publier un commentaire.
Parfois, il arrive que la même définition de la classe se trouve dans deux ou plusieurs fichiers JAR (habituellement, ce sont de dépendance des Pots). Dans un tel cas, il n'en est rien, le développeur peut faire, à part d'essayer de comprendre ce à exclure manuellement à partir de la dépendance ou de l'artefact final (peut-être avec l'aide de
mvn dependency:tree -Ddetail=true
). Je ouvert un problème et soumis un patch, pour aider le développeur à un peu plus jolie sortie commeÀ l'aide de cette sortie et qu'à partir de
mvn dependency:tree
j'ai ajouté des sections commeet a réussi à réduire le nombre de mises en garde de plusieurs milliers à quelques dizaines. Encore, ce n'est pas parfait. Encore, ils continuent à copypaste classes qui conduisent à des collisions de noms (je ne comprends pas pourquoi). Néanmoins, cette solution est spécifique à ce projet particulier et ne peut pas être facilement porté sur autre chose.
Comme une nouvelle mise à jour pour ce problème est la mise à jour des plugin maven.
La question est à l'aide de
qui va seulement vous dire que vous:
Vous laisse deviner ou à l'essai et l'erreur où la première entrée où se chevauchent les classes. Pas très utile. Heureusement,
vous donnera le plus utile de sortie qui comprend les pots d'où ils sont venus:
par exemple,
Vous pouvez alors décider d'exclure l'un ou l'autre, ou de l'utilisation de l'ombre pour renommer les classes en fonction de votre projet.