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

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

具有依赖关系的项目结构大致是这样的

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

我跟着这个
Maven multi-module project – copying all “package” JARS from submodules into parent/target/

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

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

临时解决方法

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

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

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

我的问题不是问
Maven Assembly Submodules Multimodules
或这个

Maven : Multimodule projects and versioning

我已经花了一天多的时间尝试使用maven-assembly-plugin,但没有任何成功.

如果需要更多详细信息,请与我们联系.

最佳答案
如果你想要jar中的所有依赖项,你需要创建一个uberjar.将依赖项放在jar中并不是jar通常工作的方式. uberjar让你这样做. Shade是一个在java中构建一个的插件.你也可以这样做:How can I create an executable JAR with dependencies using Maven?

如果你想创建一个lib文件夹,这里的答案将解释如何:force Maven2 to copy dependencies into target/lib

转载注明原文:java – 如何为多模块maven项目的每个模块创建自包含(独立)jar - 代码日志