【发布时间】:2014-09-09 08:33:15
【问题描述】:
在我项目的 pom.xml 中,我有以下依赖项:
<dependency>
<groupId>com.my.library</groupId>
<artifactId>MyLib</artifactId>
<version>1.0</version>
<type>jar</type>
</dependency>
<dependency>
...
</dependency>
我希望我的项目最终构建的 jar 包含上述 com.my.library:MyLib 依赖的类,所以我以以下方式使用 maven-shade-plugin:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>com.my.library:MyLib</artifact>
<includes>
<include>com/my/library/**</include>
</includes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
然后,我运行 mvn clean install ,我的项目构建成功。
但是当我检查target/目录下的MyProject.jar的内容时,它不包含来自com.my.library:MyLib依赖的类,为什么? maven-shade-plugin 我哪里错了?
【问题讨论】:
-
你在使用什么包含?为什么不开始没有任何包含/排除,然后排除不应该成为结果 jar 一部分的东西。
-
@khmarbaise ,因为我的大项目已经使用了很多依赖项,我只想在最终的 jar 中包含一个依赖项的类,这就是我使用包含而不是排除的原因。
-
@user842225:我同意您不必手动逐个排除这些库,但 khmarbaise 确实有道理。首先尝试这样,看看它是否被包含在内,然后进一步调查(并检查我的答案)。
标签: maven maven-2 maven-3 maven-plugin maven-shade-plugin