Как настроить плагин Maven shade в многомодульном проекте?
все! Я пытался получить банку с помощью плагина Maven Shade, но я все еще не получаю успеха : (
Это моя структура проекта:
MainModule
-Module1
-src
-pom.xml
-Module2
-src
-pom.xml
-pom.xml
Module1 (pom.XML-код):
<parent>
<artifactId>MainModule</artifactId>
<groupId>com.plugintest</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>Module1</artifactId>
module2 и (Пом.XML-код):
<parent>
<artifactId>MainModule</artifactId>
<groupId>com.plugintest</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>Module1</artifactId>
MainModule (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-версия.сосуд.) Но это не то, чего я хочу. Я хочу получить 1 jar-файл (MainModule-версия.банку), который будет содержать другой (Module1 и Module2).
пожалуйста, скажите мне, почему этот плагин тени не работает?
1 ответов
вы MainModule
не должен создавать файл jar. Он может производить только... файлы pom. Он содержит конфигурацию, общую для всех дочерних модулей it. Вот почему плагин shade вызывается против каждого модуля.
вместо этого создайте третий модуль. Назовем это FinalModule
. Этот модуль является дочерним MainModule
. Переместить весь <build>
узел MainModule
пом.в XML FinalModule
пом.XML.
структура файла:
MainModule -FinalModule -src -pom.xml -Module1 -src -pom.xml -Module2 -src -pom.xml -pom.xml
на FinalModule
pom.xml
выглядит вот так:
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] ------------------------------------------------------------------------