【问题标题】:Error when trying to skip projects using SonarQube Scanner for Gradle尝试使用 SonarQube Scanner for Gradle 跳过项目时出错
【发布时间】:2016-03-02 02:36:39
【问题描述】:

我一直在按照本指南为我们的项目配置 Sonar: http://docs.sonarqube.org/display/SONAR/Analyzing+with+SonarQube+Scanner+for+Gradle

这是一个多模块项目,我们有一个与子模块处于同一级别的主项目,例如:

master/build.gradle
sub1/build.gradle
sub2/build.gradle

声纳主要使用默认属性进行配置:

subprojects {
  apply plugin: 'org.sonarqube'

  sonarqube {
    properties {
      property "sonar.host.url", "http://192.168.1.2:9000/"
    }
  }
  ...
}

所以我尝试通过添加此块(在子项目下方)来跳过其中一个项目:

project(":sub2") {
  sonarqube {
    skipProject = true
  }
}

但是当从主项目执行“gradle sonarqube”时,我得到了这个异常:

...
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:331)
at org.sonar.batch.scan.ProjectReactorBuilder.defineRootProject(ProjectReactorBuilder.java:187)
at org.sonar.batch.scan.ProjectReactorBuilder.execute(ProjectReactorBuilder.java:132)
at org.sonar.batch.scan.MutableProjectReactorProvider.provide(MutableProjectReactorProvider.java:35)
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.decorateComponentInstance(CompositeInjector.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.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.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:678)
at org.sonar.core.platform.ComponentContainer.getComponentByType(ComponentContainer.java:230)
at org.sonar.batch.scan.ProjectScanContainer.doBeforeStart(ProjectScanContainer.java:118)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:98)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:85)
at org.sonar.batch.bootstrap.GlobalContainer.executeAnalysis(GlobalContainer.java:153)
at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:110)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:76)
at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:48)
at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87)
... 71 more

我做错了什么?感谢所有帮助。

【问题讨论】:

    标签: gradle sonarqube


    【解决方案1】:

    在我看来,您在根项目中应用了 sonarqube 配置:

    subprojects {
      apply plugin: 'org.sonarqube'
    
      sonarqube {
        properties {
          property "sonar.host.url", "http://192.168.1.2:9000/"
        }
      }
      ...
    }
    

    但是您正在尝试从未配置的根项目运行任务sonarqube,因为您只是为子项目完成了它。尝试为指定项目运行此任务,如gradle :sub1:sonarqube 或根据子项目sonarqube 任务在根项目中创建自定义任务,这将运行它们。

    【讨论】:

      猜你喜欢
      • 2018-05-12
      • 2021-12-21
      • 2018-10-13
      • 2019-11-08
      • 2015-01-04
      • 2016-07-19
      • 2017-02-20
      • 1970-01-01
      • 2017-03-27
      相关资源
      最近更新 更多