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

2023-11-30

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

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

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

我跟着这个Maven 多模块项目 - 将所有“包”JAR 从子模块复制到parent/target/

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

Question

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

临时解决方法

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

并运行maven生成moduleA.jar通过添加lib文件夹到类路径。这运行得很好,但我不喜欢这种手动方法,并希望 Maven 来处理它。

对于那些认为它是重复的或已经回答的人和反对票的人

我的问题不是问Maven 组装 子模块 多模块或这个

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

我已经花了一天多的时间尝试让它工作maven-assembly-plugin没有任何成功。

如果需要更多详细信息,请告诉我。


如果你想要所有依赖项in罐子,你需要创建一个uberjar。将依赖项放入 jar 并不是 jar 的正常工作方式。不过 uberjar 可以让你做到这一点。Shade是一个用java构建的插件。您也可以这样做:如何使用 Maven 创建具有依赖项的可执行 JAR?

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐