Sonar Lite模式Aux Classpath&常春藤依赖

时间:2011-02-08 01:17:26

标签: java dependencies maven ivy sonarqube

我们的项目目前使用Ivy进行依赖管理。我们真的想将我们的Hudson构建服务器与Sonar集成。到目前为止,这是一个相对简单和直接的任务。当然,我们已经将Sonar设置为以Sonar Lite模式运行(因为我们不是Maven项目)。

不幸的是,当我们的Sonar字节码扫描开始时,我们得到了很多以下内容:

  

[警告]无法访问“XXX”类   通过ClassLoader。 [WARN]班级   'XXX'无法通过   类加载器。 ...... [WARN]班级'XXX'   无法通过   类加载器。

据我所知,这是因为我们的Sonar Lite虚拟POM文件中没有定义依赖关系,因此在分析过程中不会选择要遍历的库。

Sonar installation documentation提到必须通过Maven pom文件将依赖项添加到aux类路径才能对此进行纠正。但是,似乎没有任何方法可以无痛地将这些依赖项与我们的常春藤依赖项(其中有数百个)进行同步。我们显然正在寻找一种定义依赖关系的方法,而无需在我们的虚拟pom文件中复制每个依赖关系。

在声纳codehaus网站上提出的Several issues(例如this one)似乎围绕我正在寻找的相同功能跳舞,但似乎没有提供合理的解决方案(除非我失踪)东西)。

之前有没有人处理过这种情况并且有一个相当不错的解决方案?

由于

2 个答案:

答案 0 :(得分:2)

Sonar lite机制现在似乎已被Sonar 2.6弃用。

将Sonar与非Maven构建集成的两种新方法:

ANT任务是为了与ivy对构建和运行时类路径的控制(使用配置)相结合而定制的:

<!--
  Uses ivy to download dependencies
  -->

  <target name="dependencies" description="Resolve project dependencies and set classpaths">
    <ivy:resolve/>
    <ivy:cachepath pathid="compile.path"  conf="compile"/>
    <ivy:cachepath pathid="runtime.path"  conf="runtime"/>
    <ivy:cachepath pathid="test.path"     conf="test"/>
    <ivy:cachepath pathid="anttasks.path" conf="anttasks"/>
  </target>

  <!--
  Perform source code analysis
  -->

  <target name="sonar-init" description="Declare sonar ant task">
    <taskdef uri="antlib:org.sonar.ant" 
             resource="org/sonar/ant/antlib.xml" 
             classpathref="anttasks.path"/>
  </target>

  <target name="sonar" depends="test,sonar-init" description="Run the Sonar code analysis tool">
    <ivy:info/>

    <sonar:sonar workDir="${sonar.workDir}" key="${ivy.organisation}:${ivy.module}" version="${ivy.revision}">
      <!-- Project layout -->
      <sources>
        <path location="${build.srcDir}"/>
      </sources>
      <tests>
        <path location="${build.testDir}"/>
      </tests>
      <binaries>
        <path location="${build.outputDir}"/>
        <path location="${build.testOutputDir}"/>
      </binaries>
      <libraries>
        <path refid="test.path"/>
      </libraries>
      <!-- Additional Sonar configuration -->
      <property key="sonar.java.source" value="1.5"/>
      <property key="sonar.java.target" value="1.5"/>
    </sonar:sonar>
  </target>

另请注意常春藤信息任务如何用于设置Sonar密钥和版本。

答案 1 :(得分:1)

您是否尝试过将ivy.xml的XSL转换为虚拟pom.xml?