我在Sonar中定义了一个多模块项目(带有很多子模块),它在我将声纳升级到新版本之前一直很好用。
我以前的设置是:
build.xml
。它还包含运行Sonar的<sonar:sonar />
任务。这个父项目不包含任何源/二进制文件,只包含构建子模块的指令。build.xml
文件仅包含子模块特定属性,如sonar.projectKey
,sonar.sources
和sonar.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
中保留子模块的具体定义?这将为我节省很多工作。
由于
答案 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”属性(就像你一样)。