Sonar Ant Task以兼容模式运行

时间:2013-04-09 13:59:08

标签: sonarqube

我有声纳的以下ant项目设置:

<!-- list of Sonar project related properties -->
        <property name="sonar.projectName" value="bla bla" />
        <property name="sonar.projectKey" value="com.my.project" />
        <property name="sonar.projectVersion" value="7.3" />
        <property name="sonar.language" value="java" />

        <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">
            <!-- path to libraries (optional). These libraries are for example used by the Java Findbugs plugin -->
            <libraries>
                <path>
                    <fileset dir="server/third-party-jars" includes="*.jar" />
                </path>
            </libraries>
        </sonar:sonar>

我收到1警告:

[sonar:sonar] *****************************************************************************************************************************************
[sonar:sonar] /!\ Sonar Ant Task running in compatibility mode: please refer to the documentation to udpate your scripts to comply with the standards.
[sonar:sonar] *****************************************************************************************************************************************

还有以下错误:

The following mandatory information is missing:
  - task attribute 'key'
  - task attribute 'version'

我了解迁移到新sonar ant task 2.0时发生了变化,但无法找到指定更改的地方。

此外,我了解现在所有模块设置都必须仅在 build.xml中指定,而不是在子模块build.xml文件中指定。那么为什么我会收到错误呢?我按照https://github.com/SonarSource/sonar-examples/tree/master/projects/multi-module/ant中的示例进行了操作。我错过了什么吗?

由于

2 个答案:

答案 0 :(得分:1)

您处于兼容模式,因为您已在“sonar:sonar”标记内定义了“库”。相反,您应该在此标记之外定义“sonar.libraries”,方法是使用逗号连接所有JAR文件路径。

然后多模块机制将按预期工作。

答案 1 :(得分:1)

我面临同样的问题。在我的例子中,build.xml看起来像下面的:

<target depends="build" name="sonar-runner">

    <!-- Define the SonarQube properties -->
    <property name="sonar.host.url" value="http://sonar-server:9000/sonar" />
    <property name="sonar.jdbc.url" value="jdbc:jtds:sqlserver://comp-sql-db-server/sonar;SelectMethod=Cursor" />
    <property name="sonar.jdbc.username" value="XXXXXX" />
    <property name="sonar.jdbc.password" value="*******" />
    <property name="sonar.projectKey" value="asdfsaf:2550" />
    <property name="sonar.projectName" value="Proj 1" />
    <property name="sonar.projectVersion" value="4.0.1" />
    <property name="sonar.language" value="java" />
    <property name="sonar.profile" value="Sonar Way" />
    <property name="sonar.sources" value="src" />
    <property name="sonar.sourceEncoding" value="UTF-8" />


    <!-- run sonar for this project -->
    <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
        <!-- Update the following line, or put the "sonar-ant-task-*.jar" file 
            in your "$HOME/.ant/lib" folder -->
        <classpath path="${lib-dist}/sonar/sonar-ant-task-2.1.jar" />
    </taskdef>

    <!-- Execute Sonar -->
    <sonar:sonar />
</target>

这意味着我已经为单个项目设置了ant,但是不知道为什么它需要Key和Version甚至它在属性中定义,即使我没有在声纳中提供任何东西:sonar tag。

由于