It seems that AbstractMavenLifecycleParticipant#afterSessionEnd is not invoked in some cases, at least one case for sure: when the build fails.
1. unzip the attached project
2. build it but skip tests mvn clean install -Dtest=void -DfailIfNoTests=false
3. install the resulting jar in /lib/ext of your Maven 3.2.1
4. with JAR installed in Maven, build it again with skipped tests
5. verify console output (both afterProjectsRead OK and afterSessionEnd OK are printed on console)
6. with JAR installed in Maven, build it again with tests (there is one UT that always fails).
6. console output contains only afterProjectsRead OK, but afterSessionEnd method is NOT invoked.