Presumo que você queira que a construção padrão sempre crie tudo, independentemente da velocidade, para que novos desenvolvedores possam começar rapidamente sem ter que entender muito sobre o POM. Você pode usar perfis como este:
<modules>
<module>common</module>
<module>foo</module>
<module>bar</module>
</modules>
...
<profiles>
<profile>
<id>expensive-modules-to-build</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<modules>
<module>data</module>
</modules>
</profile>
</profiles>
</project>
O problema com isso é que, se um desenvolvedor especificar outro perfil na linha de comando, o expensive-modules-to-build
não será incluído (a menos que o desenvolvedor também o especifique). Isso torna complicado lembrar quais perfis devem ser incluídos.
Aqui está uma maneira hacky de contornar isso. Ambos os perfis estão sempre incluídos, porque o arquivo pom.xml sempre existe. Então, para excluir os módulos caros, você pode usar -P!full-build
na linha de comando.
<profiles>
<profile>
<id>full-build</id>
<activation>
<file>
<exists>pom.xml</exists>
</file>
</activation>
<modules>
<module>data</module>
</modules>
</profile>
<profile>
<id>short-build</id>
<activation>
<file>
<exists>pom.xml</exists>
</file>
</activation>
<modules>
<module>common</module>
<module>foo</module>
<module>bar</module>
</modules>
</profile>
</profiles>