如何为多模块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

回到顶部