Не удается выполнить анализ 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:
mvn sonar:sonar
- Maven будет загружать и использовать последнюю версию "Codehaus Sonar Mojo" ie
org.codehaus.mojo:sonar-maven-plugin:2.1
- "Codehaus Sonar Mojo" запросит SonarQube версия сервера и bootstrap
org.codehaus.sonar:sonar-maven3-plugin:3.7
- Maven загрузит pom из
org.codehaus.sonar:sonar-maven3-plugin:3.7
и смотрите, есть перемещение вorg.codehaus.sonar:sonar-maven-plugin:3.7
- 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/...
что-то еще с сонаром (я не помню именно)