mvn -fae: Fail at End Across Modules
mvn -fae (--fail-at-end) continues the reactor after a module fails, building every module not affected by the failure, then fails at the end with the full list.
For multi-module CI, -fae gives a complete picture: one broken module does not hide failures in unrelated ones. -ff and -fn are the fail-fast and never variants.
What it does
Maven has three reactor failure modes. -ff (--fail-fast, the default) stops at the first failed module. -fae (--fail-at-end) keeps building modules that do not depend on the failed one, then fails the build with all collected failures. -fn (--fail-never) reports failures but exits 0.
Common usage
mvn -B -fae verify
mvn -B --fail-at-end install
# never fail (e.g. a best-effort report job)
mvn -B -fn testFlags
| Flag | What it does |
|---|---|
| -fae / --fail-at-end | Build all unaffected modules, fail at the end |
| -ff / --fail-fast | Stop at the first failure (default) |
| -fn / --fail-never | Report failures but exit 0 |
| -B | Batch mode for CI |
In CI
Use -fae so a single failing module surfaces every other failure in one run, cutting the fix-push-wait loop on large reactors. Reserve -fn for non-gating jobs; in a gate it would let a broken build pass. Cache ~/.m2 regardless.
Common errors in CI
The build still ends "BUILD FAILURE" with a per-module summary; modules that depend on a failed one are "SKIPPED", which is expected with -fae, not a separate error. If a clearly broken build reports "BUILD SUCCESS", you likely ran -fn, which masks failures; switch to -fae or the default.