Sonarqube 声纳蚂蚁任务在兼容模式下运行

Sonarqube 声纳蚂蚁任务在兼容模式下运行,sonarqube,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.p

我有以下用于声纳的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>
还有以下错误:

The following mandatory information is missing:
  - task attribute 'key'
  - task attribute 'version'
我知道在迁移到新的
sonar ant task 2.0
时发生了一些更改,但找不到任何指定更改的地方

此外,我了解到所有模块设置现在必须仅在父级
build.xml
中指定,而不是在子模块build.xml文件中指定。那么为什么我会得到这些错误呢?我在一篇文章中效仿了这个例子。我错过什么了吗


谢谢

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


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

我也面临同样的问题。在我的例子中,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,但不知道为什么它需要密钥和版本,甚至在属性中定义了它,即使我没有在sonar:sonar标记中提供任何内容


谢谢

好的,这确实解决了兼容性模式问题,我认为您应该在文档中提及需要从旧版本更改为新版本的内容,否则,警告消息本身就没有多大用处。谢谢。我仍然收到错误
您必须为'com.my.project'定义以下强制属性:sonar.sources
即使我为子模块定义了父项目,我是否也必须为其定义
sonar.sources
?父项目本身没有任何源…是的,现在您必须这样做(如果不重写该值,该值将在模块中继承)。但是在下一个版本的Ant任务中,这将不再是必需的。谢谢,但我不明白。父级
build.xml
中除了子模块的定义之外没有任何内容。它没有源代码,所以我应该在sonar.sources中为它添加什么?另外,如果我弄错了,请告诉我,但是在上一个版本中,我在子模块
build.xml
本身中定义了特定于模块的属性。现在在新版本中,我必须只定义父模块中的所有内容?或者我仍然可以在子模块文件本身中保留模块特定的属性吗?谢谢以前的版本有很多副作用-最显著的是在声纳属性中使用变量时(插值并不总是正确完成)。所以现在:是的,定义必须在父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>