在Maven的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 Plugin,它具有一个预定义的描述符文件用于此目的,您可以在命令行中使用它:
mvn assembly:assembly -DdescriptorId=jar-with-dependencies
如果你想让这个jar可执行,只需将要运行的主类添加到插件配置中即可:
<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
元素以满足您的需求(例如,使用清单内容)。
如果你想做一个可执行的jar文件,他们也需要设置主类。 所以完整的配置应该是。
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- ... -->
<archive>
<manifest>
<mainClass>fully.qualified.MainClass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
链接地址: http://www.djcxy.com/p/5039.html
上一篇: Including dependencies in a jar with Maven
下一篇: Can I add jars to maven 2 build classpath without installing them?