4

About twice a day we get a NullPointerException in our build:

[06:44:23]: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.5:resources (default-resources) on project spring-lib: Execution default-resources of goal org.apache.maven.plugins:maven-resources-plugin:2.5:resources failed. NullPointerException -> [Help 1]
[06:44:23]: org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.5:resources (default-resources) on project spring-lib: Execution default-resources of goal org.apache.maven.plugins:maven-resources-plugin:2.5:resources failed.
[06:44:23]: at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:225)
[06:44:23]: at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
[06:44:23]: at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
[06:44:23]: at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
[06:44:23]: at org.apache.maven.lifecycle.internal.LifecycleThreadedBuilder$1.call(LifecycleThreadedBuilder.java:167)
[06:44:23]: at org.apache.maven.lifecycle.internal.LifecycleThreadedBuilder$1.call(LifecycleThreadedBuilder.java:164)
[06:44:23]: at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
[06:44:23]: at java.util.concurrent.FutureTask.run(FutureTask.java:138)
[06:44:23]: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
[06:44:23]: at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
[06:44:23]: at java.util.concurrent.FutureTask.run(FutureTask.java:138)
[06:44:23]: at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
[06:44:23]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
[06:44:23]: at java.lang.Thread.run(Thread.java:619)
[06:44:23]: Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-resources of goal org.apache.maven.plugins:maven-resources-plugin:2.5:resources failed.
[06:44:23]: at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:110)
[06:44:23]: at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
[06:44:23]: ... 13 more
[06:44:23]: Caused by: java.lang.NullPointerException
[06:44:23]: at java.util.ArrayList.<init>(ArrayList.java:131)
[06:44:23]: at org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering.filteredFileExtension(DefaultMavenResourcesFiltering.java:115)
[06:44:23]: at org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering.filterResources(DefaultMavenResourcesFiltering.java:264)
[06:44:23]: at org.apache.maven.plugin.resources.ResourcesMojo.execute(ResourcesMojo.java:310)
[06:44:23]: at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
[06:44:23]: ... 14 more

This comes at random times, and the next build doesn't fail.

I've googled for this failure and found nothing. I have this gut feeling that this may be caused by a concurrency issue in the maven-resources-plugin.

We got this error with maven-resources-plugin 2.4.3, and now with 2.5. Our maven version is 3.0.3.

We execute the build on TeamCity with the following parameters:

Goals: install
Additional Maven command line parameters: -T 2C -e -P!releasex,integration 
-Dmaven.test.failure.ignore=true -Dmaven.test.error.ignore=true 
-Dmaven.test.haltafterfailure=false -Dmaven.junit.timeout=1000000
-DwarProject.packaging=jar

Any sort of help for solving this issue is appreciated.

Jacob
  • 41,721
  • 6
  • 79
  • 81
Eran Harel
  • 2,325
  • 19
  • 28

1 Answers1

2

Try to run maven with -X and analyze the debug output. This might help. At least for me it does very often.

Edit: This is the problematic spot:

113  public boolean filteredFileExtension( String fileName, List userNonFilteredFileExtensions )
114 {
115 List nonFilteredFileExtensions = new ArrayList( getDefaultNonFilteredFileExtensions() );

getDefault.. returns null. Did you change the nonFilteredExts somehow? Because they are populated by default here:

63  // ------------------------------------------------
64 // Plexus lifecycle
65 // ------------------------------------------------
66 public void initialize()
67 throws InitializationException
68 {
69 // jpg,jpeg,gif,bmp,png
70 this.defaultNonFilteredFileExtensions = new ArrayList( 5 );
71 this.defaultNonFilteredFileExtensions.add( "jpg" );
72 this.defaultNonFilteredFileExtensions.add( "jpeg" );
73 this.defaultNonFilteredFileExtensions.add( "gif" );
74 this.defaultNonFilteredFileExtensions.add( "bmp" );
75 this.defaultNonFilteredFileExtensions.add( "png" );
76 }

Since you are building in parallel, this might be a race condition. You should really raise an issue at MRESOURCES.

Eran Harel
  • 2,325
  • 19
  • 28
Michael-O
  • 18,123
  • 6
  • 55
  • 121
  • The problem is, that this happens on rare occasions while the build runs every 10 minutes or so. Running with -X will slow the build down. I'm also not interested in Gigs of useless logs, until this problem pops out agin. – Eran Harel Jul 25 '11 at 13:18
  • I didn't change the maven plugin code. The maven-resource-plugin is marked as thread-safe although there can be a bug... I'll post a jira issue there as well. – Eran Harel Jul 25 '11 at 13:57
  • I was not referring to the code but to your effective POM. Opening a jira helps to track such nasty bugs. – Michael-O Jul 25 '11 at 14:04
  • I didn't change nonFilteredExts in the pom.xml – Eran Harel Jul 25 '11 at 14:06
  • opened http://jira.codehaus.org/browse/MRESOURCES-149 - hope to get more help there. – Eran Harel Jul 25 '11 at 14:08
  • I've accepted this although it didn't solve my problem, only because of the link to Jira. @Michael-O You should change the URL to http://jira.codehaus.org/browse/MRESOURCES – Eran Harel Jul 31 '11 at 11:08
  • Actually not, the problem resides in the shared component which maven resoures plugin uses. So this bug is not in the plugin itself. – Michael-O Jul 31 '11 at 11:37