我有一个多模块 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(使用前将#替换为@)