Это не так просто.
Основная проблема заключается в том, что каждая WAR является собственным пространством имен в контейнере, поэтому простое их объединение может легко привести к конфликтам, если WAR A перезаписывает что-либо в WAR B (index.jsp - хороший пример).
Целесообразно взять каждую WAR и поместить их в свое собственное поддерево новой WAR, но даже при этом у вас есть «глобальные» артефакты, которые необходимо будет устранить, особенно содержимое web.xml, но также такие вещи, как файлы свойств, которые обычно имеют значение «один на WAR», например log4j.properties.
Наконец, переносимая WAR не "жестко кодирует" свое имя WAR в своих ссылках, а скорее полагается на получение контекстного пути из запроса. Однако, если вы объединяете две WAR под главной WAR, контекстный путь только к корню приложения, а не к конкретному подкаталогу каждой отдельной WAR. Итак, вам нужно выследить все эти ссылки или ссылки, где путь был жестко запрограммирован, и исправить их.
Итак, на самом деле нет автоматизированного способа объединения WAR.