Sonarqube 声纳蚂蚁任务在兼容模式下运行
我有以下用于声纳的ant项目设置: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
<!-- 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>