Чтобы реализовать это с помощью профилей, вы можете использовать два профиля: один <activeByDefault>
со всеми модулями и еще один с нужным модулем. Что-то вроде этого:
<profiles>
<profile>
<id>all</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<modules>
<module>module-1</module>
...
<module>module-n</module>
</modules>
</profile>
<profile>
<id>module-2</id>
<modules>
<module>module-2</module>
</modules>
</profile>
<profiles>
А потом называют это так:
mvn -Pmodule-2 package
Две вещи, чтобы отметить здесь:
- Вы должны переместить
<modules>
из POM в «по умолчанию "(потому что <modules>
из профиля являются только аддитивными, они не скрывают модули, объявленные в POM).
- Отметив его как
<activeByDefault>
, профиль «по умолчанию» будет выбран, если ничего не активен, но деактивирован, если что-то еще.
Можно даже Параметризуем имя модуля и передать его в собственность:
<profiles>
...
<profile>
<id>module-x</id>
<activation>
<property>
<name>module-name</name>
</property>
</activation>
<modules>
<module>${module-name}</module>
</modules>
</profile>
<profiles>
И вызвать Maven так:
mvn -Dmodule-name=module-2 package
Но это плохо ИМХО реализации, я предпочитают варианты «расширенного» реактора -pl
(меньше xml, гораздо больше мощности и гибкости):
mvn -pl module-2 package
@Pascal Thivent Просто блестящий .. Я не знаю, что сказать .. спасибо m8, вы не заняли второе место, когда дело доходит до maven – ant
Я согласен, что @Pascal - гениальный maven. Я также добавил бы, что чище использовать сборку реактора, чем настройку нескольких профилей. – 2012-11-13 21:17:46