2013-09-10 4 views
6

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

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

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 

ответ

10

Не путайте. Есть два разных плагина.

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

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

Как итог, вот что ожидается при запуске анализа SonarQube с серверами Maven 3+ и SonarQube 3.7:

  1. mvn sonar:sonar
  2. Maven будет скачать и использовать новейшие "Codehaus сонара Mojo" т.е. org.codehaus.mojo:sonar-maven-plugin:2.1
  3. "Codehaus Sonar Mojo" будет запрашивать версию сервера SonarQube и самонастройки 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 suggestion и попытаться обновить версию Maven в случае, если есть ошибка с поддержкой перемещения (я ничего не видел об этом в заметках о выпуске Maven). Затем вы должны проверить свою конфигурацию Maven (используете ли вы менеджера хранилища?).

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

+0

Большое спасибо .. Проблема в том, что Maven не смог скачать org.codehaus.sonar: sonar-maven3-plugin: 3.7. После этого он правильно перемещается в org.codehaus.sonar: sonar-maven-plugin: 3.7. Теперь он отлично работает. – Abby

+1

@Abby, что именно вам нужно было сделать, чтобы заставить его работать? Модернизировать Maven? –

+0

@Julien У меня такая же проблема; похоже, что SonarQube не может загрузить плагин на шаге 2. Я получаю «Невозможность найти org.codehaus.sonar: sonar-maven3-plugin: jar: 5.2». Любые идеи по устранению неполадок? – Shwheelz

1

Я смотрел в пом файл для 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 

, так что я думаю, вы можете использовать гидролокатор-Maven-плагин вместо эхолота-maven3-плагин.

+0

Как это определить? Все, что я делаю, это упомянуть версию 2.1 в версии maven-plugin в jenkins. Я пытаюсь найти org.codehaus.mojo.sonar-maven-plugin.2.1, который он находит, а затем пытается выполнить цель, после чего я получаю вышеуказанное исключение. – Abby

+0

Не путайте. Нет никакого сонар-maven2-плагина, и вы не должны пытаться использовать другой плагин, чем 'org.codehaus.mojo: sonar-maven-plugin'. См. Мой ответ для деталей. –

1

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

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

0

не уверен, что если мой диагноз является правильным, но это выглядит следующим образом:

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

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

Смежные вопросы