0

我在 Sonar 中定义了一个多模块项目(包含许多子模块),它运行良好,直到我将声纳升级到较新版本。

我之前的设置是:

  1. 一个包含所有通用项目属性(如 jdbc 连接等)的单亲build.xml。它还包含<sonar:sonar />运行 Sonar 的任务。这个父项目不包含任何源/二进制文件,只是构建子模块的指令。
  2. 许多build.xml仅包含子模块特定属性的子模块文件,例如sonar.projectKeysonar.sourcessonar.binaries

现在在新的 Sonar ant 任务中,我需要在 parent 中定义所有内容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像我在以前的版本中那样保留每个模块中子模块的具体定义?那会为我节省很多工作。

谢谢

4

1 回答 1

0

当前版本的 Ant Task 存在一个 bug,与嵌入的 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

,然后将“admin-api.sonar.projectBaseDir”属性(就像您所做的那样)留在顶部的 build.xml 文件中。

于 2013-04-10T09:45:30.823 回答