我正在尝试使用maven-shade-plugin 2.1构建一个超级jar。我希望它包含我的jar和依赖jar中的所有类。但我发现它不包含来自依赖jar的类。我能做错什么?以下是我在pom.xml中使用maven-shade-plugin。可能是因为finalName与project.artifactid相同吗?
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.1</version>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<minimizeJar>false</minimizeJar>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
</transformer>
</transformers>
<createDependencyReducedPom>false</createDependencyReducedPom>
<finalName>${project.artifactId}</finalName>
</configuration>
</execution>
</executions>
</plugin>
答案 0 :(得分:2)
我测试了您的代码,如果它位于<build> <plugins>
内,则可以正常运行,如下所示:
<build>
<plugins>
<plugin>
<!-- your code here -->
</plugin>
</plugins>
</build>
所有依赖项都正确包含在最终的jar中。另外,请确保要包含在着色jar中的依赖项位于<dependencies>
元素内,而不是<dependencyManagement>
元素。