如何为多模块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 ,则log4J都不打包在moduleA.jar中
如何在多模块项目中创建自包含(独立模块jar)。或者,如何获取lib
文件夹中的所有依赖关系。
现在,我使用IntelliJ IDEA ide将所有依赖项(例如log4J,Guvava等)复制到lib文件夹中
并运行moduleA.jar
通过将lib
文件夹添加到类路径生成的Maven 。这种方法运行良好,但是我不喜欢这种手动方法,并且希望Maven照顾它。
请让我知道是否需要更多详细信息。
回答:
如果要 在 jar中添加所有依赖项_,_则需要创建一个uberjar。将依赖项放入jar并不是jar正常工作的方式。uberjar可以让您做到这一点。
Shade是一个用Java构建的插件。您也可以这样进行:如何使用Maven创建具有依赖项的可执行JAR?
如果您想创建一个lib文件夹,下面的答案将解释如何:强制Maven2将依赖项复制到target /
lib
以上是 如何为多模块Maven项目的每个模块创建自包含(独立)的jar 的全部内容, 来源链接: utcz.com/qa/403205.html