为什么maven不会在生成的jar中包含依赖项

时间:2015-02-18 07:19:40

标签: maven maven-shade-plugin

我正在尝试使用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>

1 个答案:

答案 0 :(得分:2)

我测试了您的代码,如果它位于<build> <plugins>内,则可以正常运行,如下所示:

<build>
    <plugins>
        <plugin>
            <!-- your code here -->
        </plugin>
    </plugins>
</build>

所有依赖项都正确包含在最终的jar中。另外,请确保要包含在着色jar中的依赖项位于<dependencies>元素内,而不是<dependencyManagement>元素。