2013-04-10 56 views
0

我有一个多模块项目(与很多子模块)在Sonar中定义,它工作的很好,直到我将声纳升级到新版本。迁移到新的2.0 ant任务声纳时丢失的必要属性

我以前的设置为:

  1. 单亲build.xml包含所有像JDBC连接等一般项目属性此外,它包含的<sonar:sonar />任务运行声纳。这个父项目不包含任何源/二进制文件,只是构建子模块的指令。
  2. 许多子模块只包含子模块的特定属性,如sonar.projectKeysonar.sourcessonar.binaries

现在在新的声纳ant任务build.xml文件,我需要在父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就像我在以前的版本做了?这会为我节省很多工作。

感谢

回答

0

还有在Ant任务,这是关系到嵌入声纳亚军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”属性(就像你所做的那样)。

+0

我已经添加了'sonar.sources =“”'只是为了摆脱错误。现在我发现了另一个错误,你可以看到我已经设置了'sonar.libraries =“server/third-party-jars”'。我为所有子模块在一个地方安装了所有的库jar,但sonar在每个子模块根目录中查找路径“server/third-party-jars”,而不是主要位置。这里的继承模型相当混乱,我认为文档对于发生的事情不够清楚。我将不得不恢复到以前的版本... – Michael 2013-04-10 11:18:17