Вы можете использовать плагин maven winstone для создания автономного исполняемого фляги со всеми зависимостями войны, фляги и т. Д ....
Добавление
<plugins>
<plugin>
<groupId>net.sf.alchim</groupId>
<artifactId>winstone-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<goals>
<goal>embed</goal>
</goals>
<phase>install</phase>
</execution>
</executions>
<configuration>
<filename>${project.parent.build.finalName}.jar</filename>
</configuration>
</plugin>
...
</plugins>
объединит все модули вашего приложения, войны и файлы jar, а также все необходимые зависимости в исполняемый файл jar, включающий механизм сервлета.
Это прекрасно работает, если вы предоставляете одну команду для развертывания вашей команде Ops.
Я бы посоветовал не создавать банку, которая содержит все зависимости, которые будут использоваться войной. Скорее всего, у вас будет несколько копий слегка разных версий одних и тех же классов в пути к классам. Некоторые библиотеки немного хм, ммм, темпераментны по этому поводу (на ум приходят hibernate и log4j).
Maven делает приличную работу, выясняя, какие зависимости взять, и если что-то сломается зависимость mvn: дерево делает вещи намного понятнее. Вы теряете это, когда создаете супер-банку.
Если есть веские причины для этого, я бы порекомендовал среду, в которой вы можете жестко контролировать пути к классам, такие как полноценный сервер J2EE или использование контейнера OSGi. Однако будьте осторожны с тем, что вы хотите: с этими котятами нельзя обращаться (без железных) перчаток.