Вы можете определить агрегатор модуль в проекте, который имеет зависимость от всех других проектов, а затем использовать maven-dependency-plugin
собрать все банки
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-libs</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<includeScope>runtime</includeScope>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
Конечно, вы можете собирать файлы ресурсов, как при запуске скриптов и т.д. используя тот же плагин. Создайте другое исполнение
<execution>
<id>copy-sh-files</id>
<phase>package</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/scripts</outputDirectory>
<includes>bin/*.sh</includes>
</configuration>
</execution>
положить, что все вместе в один ZIP, вы должны создать файл сборки в src/assembly/zip.xml
с этим содержанием
<assembly>
<id>zip</id>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>src/bin</directory>
<outputDirectory>.</outputDirectory>
<includes>
<include>*.cmd</include>
</includes>
<lineEnding>dos</lineEnding>
</fileSet>
<fileSet>
<directory>target/lib</directory>
<outputDirectory>lib</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
</assembly>
и добавить maven-assembly-plugin
к вашей сборке плагин
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptor>src/assembly/zip.xml</descriptor>
<finalName>yourProjectFinalName</finalName>
</configuration>
<executions>
<execution>
<id>zip-bundle</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
Все эти конфигурации - всего лишь один из способов сделать это, но это хорошее начало. Крупные компании обычно имеют различные требования к своей упаковке, в том числе установщики и т. Д., Поэтому не существует решения одного размера и подходит для окончательного решения.
«Кстати, как крупные компании получают свой продукт из репозиториев maven?» Вероятно, они будут использовать [Nexus] (http://blog.sonatype.com/2010/04/why-nexus-for-the-non-programmer/) – ujulu