Maven-несколько сборок в одном pom

возможно ли создать несколько артефактов в одном файле POM? Речь идет не о создании нескольких сборок, но артефакты имеют разные сборки и зависимости, но ссылаются на один и тот же источник.

например, один артефакт, который мне нужно построить, - это файл WAR, который исключает определенные файлы AspectJ из сборки, а другой-файл JAR, который должен быть соткан во время сборки.

сейчас, у меня есть 2 пом.xml, которые работают на 2 копиях одного и того же источник для создания нужных артефактов. Можно ли это сделать за один пом?

2 ответов


обычно это плохая практика, чтобы попытаться сделать то, что вы после, хотя это может быть сделано с профилями и сборками, которые я бы рекомендовал против него.

вот как я бы подошел к этому.

разделите код в проект jar и настройте проект jar для использования плагина компилятора aspectj. Сделайте проект war зависимым от проекта jar, а проект jar-от aspectjrt. Зависимости jar, которые вы хотите исключить, могут быть указаны как область "при условии", поэтому они не будут включены в сборку или исключены путем настройки зависимости jar для исключения этих транзитивных зависимостей (см. Исключение Транзитивной Зависимости на документация по механизму зависимости для сведения.

когда война будет построена, любые зависимости с областью компиляции (и их транзитивные зависимости) будут объединены в каталог war WEB-INF/lib (т. е. aspectjrt будет включен как ну.)

Если вам нужно построить оба проекта сразу, определите агрегатор pom и укажите проекты jar и war в качестве модулей.


Хм, я думаю, что самый простой способ - это супер-pom, используя синтаксис. Кажется, было бы легче поддерживать, чем один пом с двумя целями.