有没有办法强制 maven(2.0.9) 将所有依赖项包含在一个 jar 文件中?
我有一个构建到单个 jar 文件中的项目。我也希望将依赖项中的类复制到 jar 中。
更新: 我知道我不能只在 jar 文件中包含一个 jar 文件。我正在寻找一种方法来解压缩指定为依赖项的 jar,并将类文件打包到我的 jar 中。
原文由 racer 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 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
元素以满足您的需要(例如使用清单内容作为口语)。
原文由 Pascal Thivent 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
您可以使用带有“jar-with-dependencies”描述符的 maven-assembly 插件来执行此操作。这是我们 pom.xml 之一的相关块,它执行此操作: