Ответ 1
В любом случае, чтобы убедиться, что пользователь не может установить модуль только с профилем-b? или активировать профиль-a автоматически, если только профиль-b используется?
Нет, нет способа вызвать профиль из другого (не поддерживается, см. ответ Бретта на соответствующий вопрос), а также строго запретить использование данный профиль.
Лучшее, что вы можете сделать, это использовать активацию свойств и общее свойство для активации обоих профилей:
<project>
...
</dependencies>
<profiles>
<profile>
<id>profile-a</id>
<activation>
<property>
<name>propertyX</name>
</property>
</activation>
</profile>
<profile>
<id>profile-b</id>
<activation>
<property>
<name>propertyX</name>
</property>
</activation>
</profile>
</profiles>
</project>
И передача свойства при вызове mvn вызовет оба из них:
$ mvn help:active-profiles -DpropertyX [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Q4099626 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-help-plugin:2.1.1:active-profiles (default-cli) @ Q4099626 --- [INFO] Active Profiles for Project 'com.stackoverflow:Q4099626:jar:1.0-SNAPSHOT': The following profiles are active: - profile-a (source: pom) - profile-b (source: pom)
Это не идеальное, но в настоящее время лучшее, что вы можете получить.