Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
3.1.1, 3.2.5, 3.3.1, 3.3.9
-
None
Description
Based on the issue marked for the versions-maven-plugin investigation shows that the real cause of this problem is located in maven-core.
The short description of the problem is calling Maven via: mvn -T 20 versions:set -DnewVersion=1.0-SNAPSHOT you will get an NPE.
I identified the following point in code as culprit for the problem:
MultiThreadedBuilder.java
// for each finished project for ( int i = 0; i < analyzer.getNumberOfBuilds(); i++ ) { try { ProjectSegment projectBuild = service.take().get(); if ( reactorContext.getReactorBuildStatus().isHalted() ) { break; } final List<MavenProject> newItemsThatCanBeBuilt = analyzer.markAsFinished( projectBuild.getProject() ); for ( MavenProject mavenProject : newItemsThatCanBeBuilt ) { ProjectSegment scheduledDependent = projectBuildList.get( mavenProject ); logger.debug( "Scheduling: " + scheduledDependent ); Callable<ProjectSegment> cb = createBuildCallable( rootSession, scheduledDependent, reactorContext, taskSegment, muxer ); service.submit( cb ); } } catch ( InterruptedException e ) { rootSession.getResult().addException( e ); break; } catch ( ExecutionException e ) { // TODO MNG-5766 changes likely made this redundant rootSession.getResult().addException( e ); break; } }
And the problematic part is before the second debugging output line:
ProjectSegment scheduledDependent = projectBuildList.get( mavenProject );
logger.debug( "Scheduling: " + scheduledDependent );
Callable<ProjectSegment> cb =
createBuildCallable( rootSession, scheduledDependent, reactorContext, taskSegment, muxer );
service.submit( cb );
Cause it happens that the scheduledDependent could be null which will cause the issue.
This looks like is a regression, cause in Maven 3.0.5 it works without any issue.
Update:
I have found other examples where the NPE occurs:
- mvn -T20 javadoc:aggregate
- mvn -T20 install:install-file ...
This can cause confusion if you are using mvn.config and put thing like -T X into it.