2016-03-03 3 views
1

Я тестируя Sonarqube 5.3 и Sonarqube Ant 2.4 баночку, но я бегу в проблему при вызове муравей цели сонара в моем сценарии сборкиSonarqube ant IllegalStateException; не поднимая файл свойств

Вот мой сценарий сборки (C: \ DEV \ РоС \ sonarpoc \ sonarpoc.xml):

<project name="sonarpoc" basedir="." default="init" xmlns:sonar="antlib:org.sonar.ant"> 
    ... 
    <target name="sonar"> 
     <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml"> 
      <!-- Update the following line, or put the "sonarqube-ant-task-*.jar" file in your "$HOME/.ant/lib" folder --> 
      <classpath path="/dev/jars/opensource/sonarqube/2.4/sonarqube-ant-task-2.4.jar" /> 
     </taskdef> 
     <!-- Execute the SonarQube analysis --> 
     <sonar:sonar /> 
    </target> 
    .... 
    <target name="build" depends="clean, compile, sonar, build-ear"/> 

Чтобы выполнить из командной строки, я звоню:

C:\dev\poc\sonarpoc>ant -f sonarpoc.xml clean build 

у меня есть sonar-project.properties, определенной в C: \ Dev \ РОС \ sonarpoc, который содержит

# required metadata 
sonar.host.url=http://localhost:9000 
sonar.projectKey=dev:sonarpoc 
sonar.projectName=DEV-sonarpoc 
sonar.projectVersion=1.0 
sonar.sources=source 

Пока что так хорошо. В этот момент я могу запустить сонарника и посмотреть результаты анализа на http://localhost:9000.

Однако, когда я запускаю муравьиных сценарий, как описано выше, я получаю это:

compile: 

sonar: 
[sonar:sonar] Apache Ant version 1.7.1 compiled on June 27 2008 
[sonar:sonar] SonarQube Ant Task version: 2.4 
[sonar:sonar] Loaded from: file:/C:/dev/jars/opensource/sonarqube/2.4/sonarqube-ant-task-2.4.jar 
[sonar:sonar] User cache: C:\Users\john\.sonar\cache 
[sonar:sonar] Load global repositories 
[sonar:sonar] Load global repositories (done) | time=144ms 
[sonar:sonar] User cache: C:\Users\john\.sonar\cache 
[sonar:sonar] Load plugins index 
[sonar:sonar] Load plugins index (done) | time=13ms 
[sonar:sonar] Default locale: "en_IE", source code encoding: "windows-1252" (analysis is platform dependent) 
[sonar:sonar] Process project properties 

BUILD FAILED 
java.lang.IllegalStateException: Unable to load component class org.sonar.batch.scan.ProjectLock 
    at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:62) 
    at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:678) 
    at org.sonar.core.platform.ComponentContainer.getComponentByType(ComponentContainer.java:262) 
    at org.sonar.batch.scan.ProjectScanContainer.doBeforeStart(ProjectScanContainer.java:109) 
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:130) 
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:117) 
    at org.sonar.batch.task.ScanTask.execute(ScanTask.java:55) 
    at org.sonar.batch.task.TaskContainer.doAfterStart(TaskContainer.java:86) 
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:132) 
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:117) 
    at org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:122) 
    at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:119) 
    at org.sonar.runner.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:67) 
    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.sonar.runner.impl.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:61) 
    at com.sun.proxy.$Proxy0.execute(Unknown Source) 
    at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:274) 
    at org.sonar.runner.api.EmbeddedRunner.runAnalysis(EmbeddedRunner.java:165) 
    at org.sonar.runner.api.EmbeddedRunner.runAnalysis(EmbeddedRunner.java:152) 
    at org.sonarsource.scanner.ant.SonarQubeTask.launchAnalysis(SonarQubeTask.java:72) 
    at org.sonarsource.scanner.ant.SonarQubeTask.execute(SonarQubeTask.java:55) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) 
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
    at org.apache.tools.ant.Task.perform(Task.java:348) 
    at org.apache.tools.ant.Target.execute(Target.java:357) 
    at org.apache.tools.ant.Target.performTasks(Target.java:385) 
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337) 
    at org.apache.tools.ant.Project.executeTarget(Project.java:1306) 
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 
    at org.apache.tools.ant.Project.executeTargets(Project.java:1189) 
    at org.apache.tools.ant.Main.runBuild(Main.java:758) 
    at org.apache.tools.ant.Main.startAnt(Main.java:217) 
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257) 
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104) 
Caused by: java.lang.IllegalStateException: Unable to load component class org.sonar.api.batch.bootstrap.ProjectReactor 
    at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getCompoent(ComponentContainer.java:62) 
    at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:632) 
    at org.picocontainer.parameters.BasicComponentParameter$1.resolveInstance(BasicComponentParameter.java:118) 
    at org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:136) 
    at org.picocontainer.injectors.SingleMemberInjector.getParameter(SingleMemberInjector.java:78) 
    at org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments(ConstructorInjector.java:309) 
    at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:335) 
    at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270) 
    at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364) 
    at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56) 
    at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64) 
    at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91) 
    at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699) 
    at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647) 
    at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:60) 
    ... 39 more 
Caused by: java.lang.IllegalStateException: You must define the following mandatory properties for 'Unknown': sonar.projectKey, sonar.projectName, sonar.projectVersion, sonar.sources 
    at org.sonar.batch.scan.ProjectReactorBuilder.checkMandatoryProperties(ProjectReactorBuilder.java:323) 
    at org.sonar.batch.scan.ProjectReactorBuilder.defineRootProject(ProjectReactorBuilder.java:179) 
    at org.sonar.batch.scan.ProjectReactorBuilder.execute(ProjectReactorBuilder.java:124) 
    at org.sonar.batch.scan.MutableProjectReactorProvider.provide(MutableProjectReactorProvider.java:35) 
    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.picocontainer.injectors.MethodInjector.invokeMethod(MethodInjector.java:129) 
    at org.picocontainer.injectors.MethodInjector.access$000(MethodInjector.java:39) 
    at org.picocontainer.injectors.MethodInjector$2.run(MethodInjector.java:113) 
    at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270) 
    at org.picocontainer.injectors.MethodInjector.decorateComponentInstance(MethodInjector.java:120) 
    at org.picocontainer.injectors.CompositeInjector.decorateComponentInstanceCompositeInjector.java:58) 
    at org.picocontainer.injectors.Reinjector.reinject(Reinjector.java:142) 
    at org.picocontainer.injectors.ProviderAdapter.getComponentInstance(ProviderAdapter.java:96) 
    at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699) 
    at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647) 
    at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:60) 
    ... 53 more 

Total time: 5 seconds 
C:\dev\poc\sonarpoc> 

Caused by: java.lang.IllegalStateException: You must define the following mandatory properties for 'Unknown': sonar.projectKey, sonar.projectName, sonar.projectVersion, sonar.sources 

линия сверху, где проблема лежит. Похоже, что задача ant не может распознать, что в текущем каталоге есть файл sonar-project.properties, например, sonar-runner.

Я думаю, что существует дополнительная конфигурация пути, необходимая для того, чтобы сказать муравьиной цели искать в текущем каталоге файл sonar-project.properties и использовать его, но я не могу понять, что это такое.

Я пробовал добавить: к C: \ dev \ poc \ sonarpoc \ sonarpoc.xml, но без радости.

EDIT: Муравей скрипт с целью построения выполняется успешно, когда я указываю сонара свойства в командной строке т.е.

C:\dev\poc\sonarpoc>ant -f sonarpoc.xml -Dsonar.projectKey=dev:sonarpoc -Dsonar.projectName=DEV-sonarpoc -Dsonar.projectVersion=1.0 -Dsonar.sources=source clean build 

так, что усиливает мои мысли, что есть некоторые дополнительные настройки пути для муравья цели для получения файла свойств требуется.

Неужели кто-нибудь сталкивался с этим раньше?

+0

Почему вы на 2,5? 5.3 является последним. –

+0

Путаница с версией сонара. Отредактировано сообщение для 5.3 сервера – user1421324

ответ

1

Сканер SonarQube для Ant не поддерживает файл «sonar-project.properties» из коробки. Являетесь ли вы посмотрите на documentation page, вы увидите, что вы должны обеспечить эти свойства внутри Ant файла:

<!-- Define the SonarQube project properties --> 
<property name="sonar.projectKey" value="org.codehaus.sonar:example-java-ant" /> 
<property name="sonar.projectName" value="Simple Java Project analyzed with the SonarQube Ant Task" /> 
<property name="sonar.projectVersion" value="1.0" /> 
<property name="sonar.java.binaries" value="build" /> 
<property name="sonar.java.libraries" value="lib/*.jar" /> 

Если вы хотите использовать файл свойств для размещения этих параметров, я предполагаю, что вы может вызвать для этой цели LoadProperties Ant task. Но я никогда не пробовал этого, поэтому я не могу гарантировать, что это работает.

+0

Bingo! Спасибо, Фабрицио. Я пробовал использовать свойства в файле муравья раньше, но синтаксис sonar.projectKey был некорректным, поэтому это было нарушено. Ура! – user1421324

0

Решение простое, пожалуйста, убедитесь, что вы указываете правильный каталог

Somtimes в ЦМД, он указывает на C: \

Для перехода в другой каталог необходимо добавить D:

Так что всегда проверяйте в cmd, если вы указываете на каталог нужного каталога.

0

On SonarQube 5.1.2 Я могу установить файл свойств для анализа муравьев с параметром -propertyfile sonar-project.properties.

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