Не удается выполнить анализ SonarQube от Jenkins

Я пытаюсь настроить анализ Sonarqube от Дженкинса (используя Maven). У меня установлен Sonarqube 3.7. Я настроил плагин sonar jenkins, и он работает хорошо. У меня есть Maven 3.0.3 и я использую плагин sonar maven 2.1.

проблема в том, что он пытается выполнить цель, но запрашивает org.codehaus.sonar: sonar-maven3-плагин: jar: 3.7. Я нигде не могу найти эту банку. В репозиториях также я могу просто увидеть pom для этого, а не jar

Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.1:sonar (default-cli) on project twister: Can not execute SonarQube analysis
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
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:319)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: Can not execute SonarQube analysis
at org.codehaus.mojo.sonar.Bootstraper.executeMojo(Bootstraper.java:109)
at org.codehaus.mojo.sonar.Bootstraper.start(Bootstraper.java:67)
at org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.java:109)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 19 more
Caused by: org.apache.maven.plugin.PluginResolutionException: Plugin org.codehaus.sonar:sonar-maven3-plugin:3.7 or one of its dependencies could not be resolved: Failure to find org.codehaus.sonar:sonar-maven3-plugin:jar:3.7 in the local repository

4 ответов


не путать. Есть 2 различных плагинов.

первый - это то, что мы называем "Codehaus Sonar Mojo". Это тот, который вы звоните, когда вы делаете mvn sonar:sonar. GAV этого плагина:org.codehaus.mojo:sonar-maven-plugin Недавно мы выпустили версию 2.1 Для поддержки Maven 3.1. Нет частого выпуска этого плагина, потому что мы стараемся избегать любой связи с версией SonarQube. Когда вы вызываете этот плагин, он просто сделает некоторые основные проверки, попросите сервер SonarQube для его версия, тогда загрузки "плагин SonarQube Maven".

"плагин SonarQube Maven" - это плагин, который выпускается для каждого выпуска сервера SonarQube. GAV этого плагина:org.codehaus.sonar:sonar-maven[3]-plugin. В прошлом нам нужны были 2 разных плагина (один для Maven 2, один для Maven 3). Это была работа "Codehaus Sonar Mojo", чтобы загрузить правильный в соответствии с версией Maven. Начиная с SonarQube server 3.7 существует только один плагин:org.codehaus.sonar:sonar-maven-plugin. Не нарушать совместимость с "Codehaus Sonar Mojo", который все равно нужно будет bootstrap org.codehaus.sonar:sonar-maven3-plugin когда вы используете Maven 3+, то мы добавили перемещение pom в старом месте.

как итог, вот что ожидается, когда вы начнете анализ SonarQube с Maven 3+ и SonarQube server 3.7:

  1. mvn sonar:sonar
  2. Maven будет загружать и использовать последнюю версию "Codehaus Sonar Mojo" ie org.codehaus.mojo:sonar-maven-plugin:2.1
  3. "Codehaus Sonar Mojo" запросит SonarQube версия сервера и bootstrap org.codehaus.sonar:sonar-maven3-plugin:3.7
  4. Maven загрузит pom из org.codehaus.sonar:sonar-maven3-plugin:3.7 и смотрите, есть перемещение в org.codehaus.sonar:sonar-maven-plugin:3.7
  5. Maven будет загружать и использовать org.codehaus.sonar:sonar-maven-plugin:3.7

после этого введения вернемся к вашей проблеме. Сообщение показывает, что" Codehaus Sonar Mojo " не может загрузить org.codehaus.sonar:sonar-maven3-plugin:3.7. Сначала вы должны попробовать предложение Marc и попытаться обновить версию Maven, если есть ошибка с поддержкой перемещения (я ничего не видел об этом в Мэйвен выпуске). Затем вы должны проверить свою конфигурацию Maven (используете ли вы менеджер репозитория?).

наконец, если у вас все еще есть проблема, пожалуйста, начните с чистого репозитория Maven (резервное копирование/удаление ~/.m2 / repository) затем запустите mvn sonar:sonar -X и завершите свой вопрос с полными журналами.


У меня была та же проблема. Я использовал mvn sonar:sonar, который после обновления с Sonar 3.1 до 3.7 не удалось с точно таким же сообщением об ошибке.

оказывается, я использовал старую версию Maven (3.0.1), которая, я думаю, не справилась с этим перемещением плагинов правильно. обновление to Maven 3.0.5 Исправлена проблема для меня.


Я просмотрел файл pom для sonar-maven3-plugin и похоже, что он был перемещен в sonar-maven-plugin

http://repo1.maven.org/maven2/org/codehaus/sonar/sonar-maven3-plugin/3.7/sonar-maven3-plugin-3.7.pom

пом говорит

Since Sonar 3.7 there is no more difference between Maven 2 and Maven 3 so relocate to Maven 2 plugin to avoid duplication 

поэтому, я думаю, вы можете использовать sonar-maven-plugin вместо sonar-maven3-plugin.


не уверен, что мой диагноз правильный, но он выглядит так:

  • некоторое время назад вы использовали сонар, поэтому ваш maven загрузил все плагины
  • позже они переместили некоторые из своих плагинов, поэтому ваши загруженные плагины не отражают структуру, которую они ожидают прямо сейчас (звучит смешно и прямо противоположно тому, как maven должен работать)

для меня это помогло удалить ~/.m2/repository/org/codehouse/mojo/sonar-maven-plugin и ~/.m2/repository/org/codehouse/... что-то еще с сонаром (я не помню именно)