This might be a controversial change, but before dismissing this issue, please listen to my experience with profiles:
The current profiles in the pom can be removed:
- enforce: Instead of doing -Dskip-enforce use -Denforcer.skip=true as documented here: http://maven.apache.org/plugins/maven-enforcer-plugin/enforce-mojo.html#skip
- source: Instead of doing -Dskip-sources, create an issue on the maven-source-plugin to skip it there. I see no point in skipping this though as it's not slow and the JBoss repo doesn't accept artifacts with sources.
- release: Why is that configuration in a profile? They 'll definitely forget to activate that profile during release. (Especially since -Denforce does not work but -Penforce does, but the later disables the use of other profiles). Fix on the deploy-plugin (by activating updateReleaseInfo on non-SNAPSHOT)
- dev-reports: Why does this need to be in a profile? A "mvn clean install" doesn't run them anyway. An everyone knows that a "mvn site" takes forever, so it's ok to add them there by default.
Furthermore, the motivation behind this:
- Profiles complicate the build, making it harder to understand what's happening.
- In practice, contributors want 2 profiles:
- fast (the default, no profile): includes as much as possible (including enforcer and sources jars) but nothing that is slow (like building docbook docs or assemblies)
- full (-Dfull): include everything (docbook docs, javadocs, signing, assemblies, ...): if the output missing something, it's a bug, not a missing build option
- Having more than these 2 profiles, confuses contributors and makes build maintance harder.
- When importing a pom.xml in IntelliJ or m2eclipse, you get asked which profiles you want to activate. You'll want to check the "full" profile so you get the sources of the slow modules (docbook, assemblies) too. Having other profiles there just confuses the developers.