我想向我的客户提供一个.jar文件,但我的项目目前是用Maven构建的,我有几个模块可以生成一个.jar。
我知道嵌套不同的.jar文件并不是一个好主意,所以我不知道如何实现这一目标。
有什么想法吗?
答案 0 :(得分:13)
如果你真的想要朝这个方向发展,有几种方法可以做到:
jar-with-dependencies
预定义的程序集描述符(将解包依赖项)根据您的具体要求和限制,您可能更喜欢其中一种。
答案 1 :(得分:8)
首先,问问自己是否有充分的理由将应用程序及其所有依赖项打包到一个jar中。我根本没有找到很多很好的理由(大多数理由与组织政策愚蠢或只是普通的无知有关)。要做的就是将库保存在自己的jar中,并提供包含所有库和应用程序的.zip / .tar.gz
相反,使用JNLP(更好地称为Java Web Start)。
如果你真的希望maven将所有依赖项和你的应用程序捆绑在一个jar中,你想要使用的是"jar-with-dependencies" predefined assembly。 maven assembly plugin usage page也显示了你如何做到这一点。
答案 2 :(得分:1)
您也可以尝试使用Maven Shade插件。 http://maven.apache.org/plugins/maven-shade-plugin/
有关如何使用Shade插件的一般说明,请参见使用情况页面。在下面给出的示例中描述了一些更具体的用例。最后但同样重要的是,用户偶尔会在插件的维基页面上提供其他示例,提示或勘误表。
如果您对插件的使用仍有疑问,请随时与用户邮件列表联系。邮件列表的帖子已存档,并且可能已包含您的问题的答案,作为旧线程的一部分。因此,浏览/搜索邮件存档也是值得的。
如果您认为该插件缺少某项功能或存在缺陷,您可以在我们的问题跟踪器中填写功能请求或错误报告。在创建新问题时,请提供您关注的全面说明。特别是对于修复错误,开发人员可以重现您的问题至关重要。出于这个原因,非常感谢整个调试日志,POM或最优选的小型演示项目。当然,也欢迎补丁。贡献者可以从我们的源代码库中查看项目,并在指南中找到补充信息,以帮助Maven。
答案 3 :(得分:0)
实际上,无法嵌套.jar文件。罐子里面不能有其他罐子。
.war和.ear文件可以包含jar,如果您要提供J2EE应用程序,这是一个很好的解决方案。
但是,如果您的应用只是J2SE,我建议您查看Maven Assembly plugin。顾名思义,它允许您创建构建的单个二进制分发。