迁移到新的2.0 ant任务声纳时缺少必需的属性

时间:2013-04-10 09:01:57

标签: sonarqube

我在Sonar中定义了一个多模块项目(带有很多子模块),它在我将声纳升级到新版本之前一直很好用。

我以前的设置是:

  1. 包含所有常规项目属性(如jdbc连接等)的单个父build.xml。它还包含运行Sonar的<sonar:sonar />任务。这个父项目不包含任何源/二进制文件,只包含构建子模块的指令。
  2. 许多子模块build.xml文件仅包含子模块特定属性,如sonar.projectKeysonar.sourcessonar.binaries
  3. 现在,在新的Sonar ant任务中,我需要在父buid.xml中定义所有内容。我已经按照以下方式定义了它(我在这里只展示了一个子模块,我假设如果我稍后添加更多模块它应该工作相同):

    <target name="sonar">
      <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
        <classpath path="build-utils/lib/sonar-ant-task-2.0.jar" />
      </taskdef>
      <!-- list of Sonar database related properties -->
      <property name="sonar.jdbc.url" value="jdbc:oracle:thin:@localhost/DB11g" />
      <property name="sonar.jdbc.driverClassName" value="oracle.jdbc.driver.OracleDriver" />
      <!-- for security reasons, pass these parameters from outside -->
      <property name="sonar.jdbc.username" value="" />
      <property name="sonar.jdbc.password" value="" />
      <property name="sonar.host.url" value="http://localhost:9000" />
      <!-- list of Sonar project related properties -->
      <property name="sonar.projectName" value="My Project" />
      <property name="sonar.projectKey" value="com.my.project" />
      <property name="sonar.projectVersion" value="7.3" />
      <property name="sonar.language" value="java" />
      <property name="sonar.libraries" value="server/third-party-jars"/>
    
      <property name="sonar.modules" value="admin-api" />
      <!-- all of the sub-modules -->
      <property name="admin-api.sonar.projectName" value="admin-api" />
      <property name="admin-api.sonar.projectBaseDir" location="server/admin/admin-api"/>
      <property name="admin-api.sonar.sources" value="src" />
      <property name="admin-api.sonar.binaries" value="build" />
      <sonar:sonar xmlns:sonar="antlib:org.sonar.ant" />
    </target>
    

    当我运行目标时,我收到以下错误:

    You must define the following mandatory properties for 'com.orca.rightv': sonar.sources
    

    另一个问题是,有没有办法像我在之前版本中那样在每个模块的build.xml中保留子模块的具体定义?这将为我节省很多工作。

    由于

1 个答案:

答案 0 :(得分:0)

当前版本的Ant任务中存在一个错误,该错误与嵌入的Sonar Runner API的版本有关。这将在下一个版本中修复:http://jira.codehaus.org/browse/SONARPLUGINS-2818

同时,你可以在顶部定义“sonar.sources”,它的值将继承到模块中(显然你仍然可以在模块中覆盖它)。

对于模块级别的属性定义,您可以在放置在模块根目录的“sonar-project.properties”文件中定义这些属性,如:

sonar.projectName=My Project
# following needed only to override the values defined in top build.xml
sonar.sources=src
sonar.binaries=build

,只需在顶部build.xml文件中保留“admin-api.sonar.projectBaseDir”属性(就像你一样)。