I assume that you want the default assembly to always create everything, regardless of speed, so that new developers can get started quickly without understanding a lot about POM. You can use these profiles:
<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>
The problem is that if the developer specifies a different profile on the command line, then expensive-modules-to-build does not turn on (unless the developer also specifies it). This makes it difficult to remember which profiles to enable.
Here is the hacker approach. Both profiles are always included, as the pom.xml file always exists. Thus, to exclude expensive modules, you can use -P!full-build on the command line.
<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>
artbristol Jul 11 2018-12-12T00: 00Z
source share