如何创建多模块maven项目的每个模块的自包含(独立)jar [英] How to create self-containing (standalone) jar of each modules of a multi-module maven project

查看:513
本文介绍了如何创建多模块maven项目的每个模块的自包含(独立)jar的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a multi-module maven project. The parent POM and individual module's pom are working fine (because code in each module runs fine without any dependency issue and mvn:package goal runs without any warning/error). Now, I needed to create a jar for each module.

项目结构及其依赖关系大致是这样的

Project structure with their dependencies is roughly like this

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

我跟着这个
包含多模块项目 - 复制所有包 JARS从子模块到父/目标/

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

And, able to get all my sub-module's jar into a mouduleJars folder, but I cannot run any jars because none of module's dependencies gets copied in a mouduleJars folder. For example if module A is dependent on Log4J I don't get log4j.jar in my mouduleJars folder, neither log4J is packaged inside moduleA.jar

问题

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

How to create self containing (standalone module jars) in a multi-module project. Or, how to get all the dependencies in a lib folder.

临时解决方法

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

Right now, I use my IntelliJ IDEA ide to copy all dependencies (like log4J, Guvava etc) in a lib folder

并通过添加运行maven生成的 moduleA.jar 类路径的 lib 文件夹。这样运行正常,但我不喜欢这种手动方法,并希望maven能够处理它。

and run maven generated moduleA.jar by adding the lib folder to the classpath. This runs fine, but I don't like this manual approach and wants maven to take care of it.

对于谁认为它是重复的或已经回答的downvoters

我的问题不是要求
Maven Assembly子模块多模块
或者这个

My question is NOT asking Maven Assembly Submodules Multimodules Or this

Maven:多模块项目和版本控制

我已经花了一天多时间试图让这个工作使用 maven-assembly-plugin 但没有任何成功。

I have already spent more than a day try to get this working with maven-assembly-plugin without any success.

如果需要更多详细信息,请通知我。

Please let me know if need more details.

推荐答案

如果你想在罐子中的所有依赖,你需要创建一个uberjar 。将依赖项放在jar中并不是jar通常工作的方式。 uberjar让你这样做。 Shade 是一个在java中构建一个插件的插件。你也可以这样做:怎么能我使用Maven创建了一个带有依赖项的可执行JAR?

If you want all the dependencies in the jars, you'll need to create an uberjar. Putting the dependencies in the jar is not the way jars normally work. An uberjar lets you do that though. Shade is a plugin that builds one in java. You can also do it this way: How can I create an executable JAR with dependencies using Maven?

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

If you want to create a lib folder, here's an answer that will explain how: force Maven2 to copy dependencies into target/lib

这篇关于如何创建多模块maven项目的每个模块的自包含(独立)jar的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆