Ответ 1
То, что вы хотите достичь, называется uber jar. Этот модуль должен иметь зависимость от всех других подмодулей, которые вы хотите упаковать в одну банку. Если вы создадите еще один подмодуль, который будет генерировать желаемый артефакт, он может быть построен в реакторе со всеми его зависимостями, но если это будет отдельный проект, который вы должны установить для всех элементов uber jar dependecies.
| parent
| -- submodule1
...
| -- submoduleN
| -- uberjarSubmodule
Uber jar можно сделать, используя:
-
maven-shade-plugin - в вашем случае вы должны помнить об исключении транзитивных зависимостей из ваших модулей
<project> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.2.2</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <artifactSet> <excludes> <exclude>classworlds:classworlds</exclude> <exclude>junit:junit</exclude> <exclude>jmock:jmock</exclude> <exclude>xml-apis:xml-apis</exclude> </excludes> </artifactSet> </configuration> </execution> </executions> </plugin> </plugins> </build> ... </project>
-
maven-assembly-plugin - в этом вопросе вы будете найти подробный ответ