首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Maven项目交付单个jar

使用Maven项目交付单个jar
EN

Stack Overflow用户
提问于 2010-10-06 22:01:39
回答 4查看 6.9K关注 0票数 7

我想向我的客户交付一个单独的.jar文件,但是我的项目当前是用Maven构建的,并且我有几个模块,每个模块都生成一个.jar。

我知道嵌套不同的.jar文件不是一个好主意,所以我不确定如何才能做到这一点。

有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-06 22:16:15

首先,问问自己,是否有充分的理由将应用程序及其所有依赖项打包到单个jar中。我根本没有找到一个很好的理由(大多数原因与组织政策的愚蠢或纯粹的无知有关)。方法是将库保存在它们自己的jars中,并提供一个.zip/.tar.gz文件,其中包含所有的库和应用程序

  1. 一个在MANFIEST.MF文件中适当设置了类路径的可执行.jar
  2. 一个.bat/.sh脚本,该脚本调用java并基于您的deps

构建适当的类路径

相反,使用JNLP (更为人熟知的是Java Web Start)。

如果您真的想让maven将所有依赖项和应用程序捆绑到一个jar下,那么您需要使用的是"jar-with-dependencies" predefined assemblymaven assembly plugin usage page还显示了如何实现这一点。

票数 8
EN

Stack Overflow用户

发布于 2010-10-06 22:54:24

如果你真的想朝这个方向发展,有几种方法可以做到:

Maven Assembly Plugin

  • ,可能还有jar-with-dependencies预定义的程序集描述符(这将解压dependencies)
  • with Maven Assembly Plugin(类似于上面的描述,但给了更多的(它使用One-JAR及其自定义类加载器来允许嵌套JAR)

根据您的确切要求和约束,您可能更喜欢其中之一。

票数 13
EN

Stack Overflow用户

发布于 2012-08-14 04:55:05

你也可以试试Maven Shade插件。http://maven.apache.org/plugins/maven-shade-plugin/

有关如何使用Shade插件的一般说明可以在使用页面上找到。下面给出的示例中描述了一些更具体的用例。最后但并非最不重要的是,用户偶尔会向插件的wiki页面提供额外的示例、提示或勘误表。

如果您对插件的使用仍有疑问,请随时联系用户邮件列表。邮件列表中的帖子已存档,并且可能已经包含您的问题的答案,作为旧帖子的一部分。因此,浏览/搜索邮件存档也是值得的。

如果您觉得插件缺少某个功能或有缺陷,您可以在我们的问题跟踪器中填写功能请求或错误报告。创建新问题时,请对您所关注的问题进行全面描述。特别是对于修复bug,开发人员能够重现您的问题是至关重要的。出于这个原因,非常感谢整个调试日志、POMs或更好的附加到该问题的小演示项目。当然,补丁也是受欢迎的。贡献者可以从我们的源代码库中检出该项目,并在帮助Maven的指南中找到补充信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3873265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档