如何创建多模块maven项目的每个模块的自包含(独立)jar
我有一个多模块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, mouduleJars
也没有打包在moduleA.jar中
题
如何在多模块项目中创建包含self(独立模块jar)的self。 或者,如何获取lib
文件夹中的所有依赖项。
临时解决方法
现在,我使用我的IntelliJ IDEA ide复制lib文件夹中的所有依赖项(如log4J,Guvava等)
并通过将lib
文件夹添加到类路径来运行maven生成的moduleA.jar
。 这样运行正常,但我不喜欢这种手动方法,并希望maven能够处理它。
谁认为它是重复的或已经回答和downvoters
我的问题是不要求Maven Assembly Submodules Multimodules或者这个
Maven:多模块项目和版本控制
我已经花了一天多的时间尝试使用maven-assembly-plugin
但没有任何成功。
如果需要更多详细信息,请与我们联系。
如果你想要jar 中的所有依赖项,你需要创建一个uberjar 。 将依赖项放在jar中并不是jar通常工作的方式。 uberjar让你这样做。 Shade是一个在java中构建一个的插件。 您也可以这样做: 如何使用Maven创建具有依赖关系的可执行JAR?
如果你想创建一个lib文件夹,这里的答案将解释如何: 强制Maven2将依赖项复制到target / lib
我用AppAssembler maven插件做了这个。 它会自动复制所有必需的依赖项,并为主类创建快捷方式。 它比我试过的其他插件容易得多。
对于超级jar应用程序,我使用maven-shade-plugin将jar合并到一个+ proguard中进行收缩,但AppAssembler使用起来更加快速和稳定。
- 如何在使用GAE Maven插件时在IDEA中调试Java Google App Engine应用程序?
- 如何在Intellij IDEA中复制maven依赖项以输出工件WEB-INF / lib?
- 如何在IntelliJ中将资源文件添加到JAR
- 无法从java 8流中的静态上下文引用非静态方法
- IntelliJ IDEA + Maven iml文件中依赖项的需要是什么?
- 为什么java编译器不报告Intellij中多播表达式的未经检查的强制转换警告?
- IntelliJ idea gui designer + maven
- 如何删除intelliJ IDEA 10.5中的项目?
- IntelliJ是否支持任何类型的模板自动创建多个文件?