Nano Hash - криптовалюты, майнинг, программирование

Странное исключение NullPointerException в плагине maven-resources

Примерно два раза в день мы получаем 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

Приветствуется любая помощь в решении этой проблемы.


Ответы:


1

Попробуйте запустить maven с -X и проанализировать вывод отладки. Это может помочь. По крайней мере у меня так бывает очень часто.

Изменить: это проблемное место:

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

getDefault.. возвращает null. Вы как-то изменили nonFilteredExts? Потому что они заполнены по умолчанию здесь:

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 }

Поскольку вы строите параллельно, это может быть состоянием гонки. Вам действительно следует задать вопрос на странице MRESOURCES.

25.07.2011
  • Проблема в том, что это происходит в редких случаях, когда сборка запускается каждые 10 минут или около того. Запуск с -X замедлит сборку. Гиги бесполезных логов меня тоже не интересуют, пока опять не вылезет эта проблема. 25.07.2011
  • Я не менял код плагина maven. Плагин maven-resource-plugin помечен как потокобезопасный, хотя может быть ошибка... Я также опубликую там проблему jira. 25.07.2011
  • Я имел в виду не код, а ваш эффективный POM. Открытие jira помогает отслеживать такие неприятные ошибки. 25.07.2011
  • Я не менял nonFilteredExts в pom.xml 25.07.2011
  • открыт jira.codehaus.org/browse/MRESOURCES-149 — надеюсь получить дополнительную помощь там. 25.07.2011
  • Я принял это, хотя это не решило мою проблему, только из-за ссылки на Jira. @Michael-O Вам следует изменить URL-адрес на jira.codehaus.org/browse/MRESOURCES. 31.07.2011
  • На самом деле нет, проблема заключается в общем компоненте, который использует плагин maven resoures. Так что этот баг не в самом плагине. 31.07.2011
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..