ошибка сборки плагина sonar maven, версия SonarQube: null
мои сборки jenkins только начали терпеть неудачу с этим сообщением:
[INFO] --- sonar-maven-plugin:2.7:sonar (default-cli) @ cividas-core-web ---
[INFO] artifact com.ontimize:ontimize-core: checking for updates from central
[INFO] artifact com.ontimize:ontimize-core: checking for updates from imatia-local
[INFO] artifact com.ontimize:ontimize-core: checking for updates from snapshots
[INFO] User cache: /var/lib/jenkins/.sonar/cache
[INFO] SonarQube version: null
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.773s
[INFO] Finished at: Thu Oct 22 19:49:04 CEST 2015
[INFO] Final Memory: 13M/193M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.7:sonar (default-cli) on project cividas-core-web: null: MojoExecutionException: NullPointerException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.7:sonar (default-cli) on project cividas-core-web: null
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:317)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException
at org.codehaus.mojo.sonar.bootstrap.ExceptionHandling.handle(ExceptionHandling.java:41)
at org.codehaus.mojo.sonar.bootstrap.RunnerBootstrapper.execute(RunnerBootstrapper.java:107)
at org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.java:141)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 19 more
Caused by: java.lang.NullPointerException
at org.apache.maven.artifact.versioning.ComparableVersion.parseVersion(ComparableVersion.java:354)
at org.apache.maven.artifact.versioning.ComparableVersion.<init>(ComparableVersion.java:345)
at org.apache.maven.artifact.versioning.DefaultArtifactVersion.parseVersion(DefaultArtifactVersion.java:110)
at org.apache.maven.artifact.versioning.DefaultArtifactVersion.<init>(DefaultArtifactVersion.java:46)
at org.codehaus.mojo.sonar.bootstrap.RunnerBootstrapper.isVersionPriorTo5Dot2(RunnerBootstrapper.java:192)
at org.codehaus.mojo.sonar.bootstrap.RunnerBootstrapper.execute(RunnerBootstrapper.java:84)
... 22 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
Sonar analysis completed: FAILURE
что все это значит?
6 ответов
для тех, кто интересуется "почему?", Я сделал еще несколько раскопок, и, похоже, происходит следующее:
RunnerBootstrapper пытается проверить, является ли версия 5.2+:
во-первых, serverVersion является извлечь с пусковой установки создано в EmbeddedRunner,
используя IsolatedLauncher создание прокси - of класс реализации BatchIsolatedLauncher
, который пытается читать файл ресурсов
sq-version.txt
содержащий версию.
этой sq-version.txt
файл находится в org.codehaus.sonar: sonar-plugin-api, но эта зависимость не входит (даже косвенно) в sonar-maven-plugin. Все это ссылается на sonar-wise org.sonarsource.sonar-runner: sonar-runner-api.
они вроде изменили расположение и название файла версии txt но не обновлен весь код. Вам может сойти с рук добавление sq-version.txt
с содержанием 5.2
(без новой строки) к пути к классу плагина (возможно, путем обновления jar плагина) или добавить зависимость от sonar-plugin-api, но это хаки.
sonar-maven-plugin 2.6 использует sonar-runner 2.4, что очень в отличие от 2.5, который использует sonar-maven-plugin 2.7 (groupId для sonar-runner имеет изменен доменов с org.codehaus.sonar.runner
до org.sonarsource.sonar-runner
), поэтому лучше придерживаться v2.6 плагин, пока они не сгладили переход и выпустили еще несколько версий.
решено путем понижения автоматически выбранной последней (2.7) версии до более старой (2.4), добавив этот код в раздел плагинов my pom.xml
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>2.4</version>
</plugin>
способ передачи версии сервера SonarQube в maven-sonar-plugin
изменилось в v2.7, наряду с другими вещами, так как он использует сейчас sonar-runner 2.5
.
действительно есть ошибка при использовании его с экземплярами SonarQube https://jira.sonarsource.com/browse/MSONAR-131
обратите внимание, что SQs LTS) больше не поддерживаются активно и нет никакой гарантии, что sonar-maven-plugin
не будет несовместимо с ними в другие способы из-за нового интерфейса, открытого sonar-runner 2.5
.
для этих случаев, вероятно, лучше всего заблокировать версию плагина maven до 2.6, как уже предлагалось.
у нас была такая же проблема на работе сегодня, мы автоматически используем последнюю версию для плагинов maven и sonar. Сначала было нелегко найти проблему.
ответ elcodedocle дал правильный, но я хотел бы добавить для тех, кто использует maven с сонаром в автоматическом режиме, что это решение также:
org.codehaus.mojo: sonar-maven-плагин: 2.6: sonar
таким образом, он работает на старой версии 2.6 и я могу подтвердить что это работает.
вероятно, есть ошибка в 2.7, и я надеюсь, что она будет исправлена в ближайшее время. Это была наша ошибка:
[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven plugin:2.7:sonar (default-cli) on project (projectName): Unable to determine structure of project. Probably you use Maven Advanced Reactor Options with a broken tree of modules. "(projectName)" is orphan -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
EDIT: Взгляните на этот пост для получения дополнительной информации: Jenkins Sonar плагин внезапно перестает работать
здесь объясняется, что новая версия 2.7 плагина больше не совместима с проектами java 6. Вы также можете найти объяснение о том, как исправить это в Дженкинсе, если вы не знакомы с ним. (мое объяснение было немного коротким)
Это намек:
[INFO] SonarQube version: null
позже в коде Maven пытается проанализировать этот номер версии и терпит неудачу. Исходный код находится здесь: https://github.com/mojohaus/sonar-maven-plugin/blob/master/src/main/java/org/codehaus/mojo/sonar/bootstrap/RunnerBootstrapper.java
С источник SonarQube runner, это поддерживается экземпляром свойств. Поэтому, возможно, код не смог получить доступ к серверу или сервер не отправляет эти данные спина. Трудно сказать.
а я вижу, что код изменился в 2.5. Вероятно, поэтому 2.4 все еще работает. Смотрите здесь, как прибить версии:Jenkins Sonar плагин внезапно перестает работать
Откройте для себя соответствующую версию плагина для запуска установки sonar.
Е. Г. mvn org.codehaus.mojo: sonar-maven-плагин: 2.6: sonar
эта версия плагина не будет работать против последней версии sonar, но будет отлично работать против 4.1.2.