【问题标题】:Mandatory properties missing when migrating to new 2.0 ant task sonar迁移到新的 2.0 ant 任务声纳时缺少强制属性
【发布时间】:2013-04-10 17:45:30
【问题描述】:

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

我之前的设置是:

  1. 一个单亲build.xml 包含所有通用项目属性,如jdbc 连接等。它还包含运行声纳的<sonar:sonar /> 任务。此父项目不包含任何源代码/二进制文件,仅包含构建子模块的说明。
  2. 许多子模块build.xml 文件仅包含子模块特定属性,如sonar.projectKeysonar.sourcessonar.binaries

现在在新的 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 中保留子模块的具体定义?这会为我节省很多工作。

谢谢

【问题讨论】:

    标签: sonarqube


    【解决方案1】:

    当前版本的 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
    

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

    【讨论】:

    • 我添加了sonar.sources="" 只是为了消除错误。现在我发现了另一个错误,你可以看到我设置了sonar.libraries="server/third-party-jars"。我将所有子模块的所有库 jar 放在一个地方,但声纳在每个子模块根目录中查找路径 server/third-party-jars,而不是在主要位置。这里的继承模型非常混乱,我认为文档对正在发生的事情不够清楚。我将不得不恢复到以前的版本...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 2018-06-24
    相关资源
    最近更新 更多