gpt4 book ai didi

java - 如何在多模块项目中配置 Maven shade 插件?

转载 作者:搜寻专家 更新时间:2023-10-30 19:42:47 24 4
gpt4 key购买 nike

我一直在尝试使用 Maven Shade Plugin 获取 jar,但我仍然没有成功。

这是我的项目结构:

MainModule
-Module1
-src
-pom.xml
-Module2
-src
-pom.xml
-pom.xml

模块 1 (pom.xml):

<parent>
<artifactId>MainModule</artifactId>
<groupId>com.plugintest</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>Module1</artifactId>

模块 2 (pom.xml):

<parent>
<artifactId>MainModule</artifactId>
<groupId>com.plugintest</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>Module1</artifactId>

主模块(pom.xml):

<groupId>com.plugintest</groupId>
<artifactId>MainModule</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>Module1</module>
<module>Module2</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

根据这段代码,我得到了 2 个 jar 文件(Module1-version.jar 和 Module2-version.jar)。但这不是我想要的。我希望获得 1 个 jar 文件 (MainModule-version.jar),其中将包含另一个(模块 1 和模块 2)。

为什么这个 Shade 插件不起作用?

最佳答案

MainModule不应该生成 jar 文件。它只能产生... pom 文件。它包含在所有子模块之间共享的配置。这就是针对每个模块调用 shade 插件的原因。

相反,创建第三个模块。我们称它为FinalModule .此模块是 MainModule 的子模块.整体搬家<build>来自 MainModule 的节点pom.xml 到 FinalModule pom.xml.

文件结构:

   MainModule      -FinalModule        -src        -pom.xml      -Module1        -src        -pom.xml      -Module2        -src        -pom.xml      -pom.xml

The FinalModule pom.xml looks like this:

FinalModule (pom.xml)

<parent>
<groupId>com.plugintest</groupId>
<artifactId>MainModule</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>FinalModule</artifactId>

<dependencies>
<dependency>
<groupId>com.plugintest</groupId>
<artifactId>Module1</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.plugintest</groupId>
<artifactId>Module2</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

最后,你应该得到这样的东西:

[INFO] 
[INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ FinalModule ---
[INFO] Building jar: D:\workspaces\java\Parent\FinalModule\target\FinalModule-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-shade-plugin:2.2:shade (default) @ FinalModule ---
[INFO] Including my:Module1:jar:1.0-SNAPSHOT in the shaded jar.
[INFO] Including my:Module2:jar:1.0-SNAPSHOT in the shaded jar.
[INFO] Replacing original artifact with shaded artifact.
[INFO] Replacing D:\workspaces\java\Parent\FinalModule\target\FinalModule-1.0-SNAPSHOT.jar with D:\workspaces\java\Parent\FinalModule\target\FinalModule-1.0-SNAPSHOT-shaded.jar
[INFO] Dependency-reduced POM written at: D:\workspaces\java\Parent\FinalModule\dependency-reduced-pom.xml
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Parent ............................................ SUCCESS [0.016s]
[INFO] Module1 ........................................... SUCCESS [1.654s]
[INFO] Module2 ........................................... SUCCESS [0.343s]
[INFO] FinalModule ....................................... SUCCESS [0.953s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

关于java - 如何在多模块项目中配置 Maven shade 插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21021485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com