Чтобы реализовать это с профилями, вы можете использовать два профиля, один <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