Да, это можно сделать, используя Наложения . Пример на веб-странице - именно то, о чем вы говорите.
Для структуры проекта у вас может быть что-то вроде этого:
.
|-- PM-Core
|-- PM-WebCommon (of type war, depends on core)
|-- PM-Client1 (of type war, depends on webcommon)
`-- PM-Client2 (of type war, depends on webcommon)
И используйте оверлей в PM-Client1 и PM-Client2, чтобы «объединить» их с PM-WebCommon и пакетными войнами для каждого клиента.
ОБНОВЛЕНИЕ Я не буду охватывать все детали, но я думаю, что объявление зависимости войны с областью действия типа runtime
требуется при использовании наложения, именно так работает наложение (фактически, вся штука с оверлеем это своего рода хак). Теперь, чтобы решить проблему с затмением, одним из решений будет создание JAR, содержащего классы проекта PM-WebCommon. Для этого используйте необязательный параметр attachClasses
и установите для него значение true
. Это скажет maven создать PM-WebCommon-<version>-classes.jar
, который вы затем сможете объявить как зависимость в PM-Client1 (с областью действия provided
). Для получения более подробной информации, посмотрите MWAR-73 и MWAR-131 . Это также обсуждается в FAQ плагина войны. Обратите внимание, что это не рекомендуемая практика, правильным способом было бы перенести классы в отдельный модуль (и это другое решение, которое я хотел упомянуть).
ОБНОВЛЕНИЕ (201001018): я пробовал параметр attachClasses
, и он работает с версией 2.1-бета-1 плагина.