使用 Maven 在 jar 中包含依赖项
有没有办法强制maven(2.0.9)将所有依赖项包含在单个jar文件中?
我有一个项目,构建成一个jar文件。我希望将依赖项中的类也复制到jar中。
更新:我知道我不能只在jar文件中包含一个jar文件。我正在寻找一种方法来解压缩指定为依赖项的jar,并将类文件打包到我的jar中。
有没有办法强制maven(2.0.9)将所有依赖项包含在单个jar文件中?
我有一个项目,构建成一个jar文件。我希望将依赖项中的类也复制到jar中。
更新:我知道我不能只在jar文件中包含一个jar文件。我正在寻找一种方法来解压缩指定为依赖项的jar,并将类文件打包到我的jar中。
您可以使用带有“jar-with-dependencies”描述符的maven-assembly插件来执行此操作。这是来自我们的一个pom.xml的相关块,它就是这样做的:
<build>
<plugins>
<!-- any other plugins -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
在 Maven 2 中,正确的方法是使用 Maven2 Assembly 插件,该插件具有预定义的描述符文件,您可以直接在命令行上使用:
mvn assembly:assembly -DdescriptorId=jar-with-dependencies
如果你想让这个jar可执行,只需将要运行的main类添加到插件配置中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>my.package.to.my.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
如果要在正常生成过程中创建该程序集,则应将单个或目录-单个目标(目标只能从命令行运行)绑定到生命周期阶段(有意义),如下所示:assembly
package
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>create-my-bundle</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
...
</configuration>
</execution>
</executions>
</plugin>
调整元素以满足您的需求(例如,使用口头的清单内容)。configuration