【问题标题】:Strange NullPointerException in maven-resources-pluginmaven-resources-plugin 中的奇怪 NullPointerException
【发布时间】:2011-10-12 14:01:24
【问题描述】:

我们每天大约两次在构建中收到 NullPointerException:

[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

这是随机出现的,下一次构建不会失败。

我已经用谷歌搜索了这个失败,但一无所获。我有这种直觉,这可能是由 maven-resources-plugin 中的并发问题引起的。

我们在 maven-resources-plugin 2.4.3 和现在的 2.5 中遇到了这个错误。我们的 maven 版本是 3.0.3。

我们使用以下参数在 TeamCity 上执行构建:

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

对于解决此问题的任何形式的帮助表示赞赏。

【问题讨论】:

    标签: maven build teamcity maven-resources-plugin


    【解决方案1】:

    尝试使用-X 运行maven 并分析调试输出。这可能会有所帮助。至少对我来说,它经常发生。

    编辑:这是有问题的地方:

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

    getDefault.. 返回null。您是否以某种方式更改了 nonFilteredExts ?因为它们默认填充在这里:

    63 // ------------------------------------------ ------
    64 // Plexus 生命周期
    65 // -------------------------- ----------------------
    66 public void initialize()
    67 抛出 InitializationException
    68 {
    69 // jpg,jpeg,gif,bmp,png
    70 这个.defaultNonFilteredFileExtensions = new ArrayList( 5 );
    71 this.defaultNonFilteredFileExtensions.add( "jpg" );
    @ 987654341@ this.defaultNonFilteredFileExtensions.add( "jpeg" );
    73 this.defaultNonFilteredFileExtensions.add( "gif" );
    74 this.defaultNonFilteredFileExtensions.add( "bmp" );
    75 this.defaultNonFilteredFileExtensions.add( "png" );
    76 }

    由于您是并行构建的,因此这可能是一种竞争条件。你真的应该在MRESOURCES 提出问题。

    【讨论】:

    • 问题是,这种情况很少发生,而构建每 10 分钟左右运行一次。使用 -X 运行会减慢构建速度。我也对无用日志的演出不感兴趣,直到这个问题再次出现。
    • 我没有更改maven插件代码。尽管可能存在错误,但 maven-resource-plugin 被标记为线程安全的......我也会在那里发布一个 jira 问题。
    • 我指的不是代码,而是您的有效 POM。打开 jira 有助于跟踪这些讨厌的错误。
    • 我没有更改 pom.xml 中的 nonFilteredExts
    • 已打开 jira.codehaus.org/browse/MRESOURCES-149 - 希望在那里获得更多帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 2014-12-04
    • 1970-01-01
    相关资源
    最近更新 更多