Как собрать несколько исполняемых JAR-файлов из многомодульного проекта maven
У меня есть многомодульный проект, как это
foobar
|
+-- pom.xml
|
+-- common-lib/
| |
| +-- pom.xml
| +-- src/
|
+-- foo-app/
| |
| +-- pom.xml
| +-- src/
|
+-- bar-app/
| |
| +-- pom.xml
| +-- src/
|
-+-
И то и другое foo-app
а также bar-app
зависит от кода в common-lib
а также о зависимостях в их собственных POM.
С помощью mvn package
Я могу построить три легких банки.
Мне нужны два исполняемых JAR-файла, каждый с включенными зависимостями, для:
- Foo-приложение
- бар-приложение
Как мне сделать это с Maven?
В случае, если кто-то предлагает это, из-за столкновений между foo-app
а также bar-app
Я не могу объединить их в одно приложение foobar.
1 ответ
Добавьте плагин сборки maven в файл pom.xml, в котором вы хотите создать исполняемый файл jar с зависимостями. казнить mvn package
на агрегаторе pom.xml. Эта команда выполнит mvn package
Команда на всех подмодулях. Те, которые имеют плагин сборки maven, будут генерировать исполняемые файлы jar с зависимостями.
В вашем случае добавьте это в проекты foo-app и bar-app pom.xml. И настройте свой <mainClass>your.package.mainclass</mainClass>
По каждому проекту основной класс.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>your.package.mainclass</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>