当前位置: 首页 > 面试题库 >

如何为多模块Maven项目的每个模块创建自包含(独立)的jar

水瀚漠
2023-03-14
问题内容

我有一个多模块的Maven项目。父POM和单个模块的pom运行正常(因为每个模块中的代码运行正常,没有任何依赖关系问题,mvn:package目标运行没有任何警告/错误)。现在,我需要为每个模块创建一个jar。

项目结构及其依赖关系大致如下

ProjectABC
|
|--ModuleA
|     |-Log4J
|     |-Guava
|     |-pom.xml  
|
|--ModuleB
|     |-ModuleA
|     |-Commons
|     |-pom.xml         
|
|
|--MoudleC
|     |-ModuleB
|  
|-pom.xml

我遵循了这个 Maven多模块项目-将所有“包”JARS从子模块复制到父级/目标/

而且,能够将我的所有子模块的jar放入一个mouduleJars文件夹,但是我无法运行任何jar,因为模块的依赖项都没有被复制到mouduleJars文件夹中。例如,如果module A依赖于Log4J我在我的mouduleJars文件夹中没有获取log4j.jar ,则log4J都不打包在moduleA.jar中

如何在多模块项目中创建自包含(独立模块jar)。或者,如何获取lib文件夹中的所有依赖关系。

临时解决方法

现在,我使用IntelliJ IDEA ide将所有依赖项(例如log4J,Guvava等)复制到lib文件夹中

并运行moduleA.jar通过将lib文件夹添加到类路径生成的Maven 。这种方法运行良好,但是我不喜欢这种手动方法,并且希望Maven照顾它。

请让我知道是否需要更多详细信息。


问题答案:

如果要 jar中添加所有依赖项_,_则需要创建一个uberjar。将依赖项放入jar并不是jar正常工作的方式。uberjar可以让您做到这一点。
Shade是一个用Java构建的插件。您也可以这样进行:如何使用Maven创建具有依赖项的可执行JAR?

如果您想创建一个lib文件夹,下面的答案将解释如何:强制Maven2将依赖项复制到target /lib



 类似资料:
  • 是否可以为我的多模块maven项目的每个模块生成单独的jar文件。我的项目结构 应用程序模块具有main()方法。模块1和模块2具有由UI使用的RESTendpoint。目前,当我在应用程序模块上运行mvn包时,我得到了一个大的胖jar,其中包含所有Spring Boot依赖项以及每个模块1和模块2的依赖项。 相反,我想为module1和module2创建一个单独的jar文件。这样当我在modul

  • 我有一个Maven项目,包含几个模块,其结构类似于: 我已经在parent在

  • 我有一个spring boot mavel多模块项目。 如果Spring启动模块依赖于模块,并且在模块的文件夹中有一个属性文件或其他一些资源,我希望捆绑在最终的Spring启动应用程序中,我如何实现这一点。 目前,如果我在模块A JAR上运行,它包括文件: 然而: 提前感谢您的任何建议。

  • 我使用的是IntelliJ IDEA社区版2016.1.3。我正在尝试创建一个maven多模块项目。项目公司是父模块,项目员工和项目技能集是子模块。项目员工和技术人员将有包装作为战争,但项目公司有包装作为POM。 我无法在employee和Skillset下创建一个类。我如何创建一个多模块的项目而没有在父(公司)的src文件夹?

  • 嗨我在网上搜了一遍,看了一堆文章,所以问题和文档都找不到解决办法,这里是我的问题。 我有一个多模块maven项目,其中包含三个模块a、B和C,a和B独立,C依赖于a和B,当然我有一个父项目。我还设置了一个jenkins服务器来构建这些项目,以及一个nexus存储库。 如有任何帮助,不胜感激。谢谢!