with shade plugin from exclude dependency java maven jar maven-assembly-plugin

java - shade - ¿Cómo excluir dependencias del complemento de ensamblado de maven: jar-with-dependencies?



maven-jar-plugin (3)

Agregue el <scope>provided</scope> a las dependencias que no desea incluir en el jar-with-dependencies, por ejemplo

<dependency> <groupId>storm</groupId> <artifactId>storm</artifactId> <version>0.6.1-SNAPSHOT</version> <scope>provided</scope> </dependency>

El complemento de ensamblaje de Maven permite la creación de un gran contenedor que incluye todas las dependencias con descriptorRef jar-with-dependencies .

¿Cómo puede uno excluir algunas de estas dependencias? Parece que no tiene tal configuración? ¿Hay otra solución?


Debe utilizar la opción de excludes disponible en dependencySet .
Seguir debajo.:

Ejemplo en tu pom.xml :

... <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.3</version> <configuration> <finalName>../final/${project.artifactId}</finalName> <archive> <manifest> <addClasspath>false</addClasspath> <mainClass>com.entrerprise.App</mainClass> </manifest> </archive> <descriptors> <descriptor>src/main/resources/jar-with-deps-with-exclude.xml</descriptor> </descriptors> <appendAssemblyId>false</appendAssemblyId> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> ...

Ahora en su nuevo archivo jar-with-deps-with-exclude.xml (donde dependencySet live):

<?xml version="1.0" encoding="UTF-8"?> <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd"> <id>jar-with-dependencies-and-exclude-classes</id> <formats> <format>jar</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <dependencySets> <dependencySet> <outputDirectory>/</outputDirectory> <useProjectArtifact>false</useProjectArtifact> <unpack>true</unpack> <scope>runtime</scope> <excludes> <exclude>junit:junit</exclude> <exclude>commons-cli:commons-cli</exclude> <exclude>org.apache.maven.wagon:wagon-ssh</exclude> </excludes> </dependencySet> </dependencySets> <fileSets> <fileSet> <outputDirectory>/</outputDirectory> <directory>${project.build.outputDirectory}</directory> </fileSet> </fileSets> </assembly>

Eso es todo.