Mat*_*aun 5 gradle jenkins sonarqube
当SonarQube分析我的使用Gradle和Jenkins构建的Java项目时,我收到很多关于无法通过ClassLoader访问第三方库的警告:
WARN - Class 'org/slf4j/Logger' is not accessible through the ClassLoader.
WARN - Class 'com/google/gson/Gson' is not accessible through the ClassLoader.
Run Code Online (Sandbox Code Playgroud)
这些库在我的build.gradle中都列为依赖项。
我在这里阅读了有关使用sonar.libraries属性的信息,该属性将为Jar提供路径。但是因为Gradle为我下载了这些依赖项,所以路径在我的机器上看起来像这样:/home/siberut/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.5/6b262da268f8ad9eff941b25503a9198f0a0ac93/slf4j-api-1.7.5.jar。
这些路径随着库的每个新版本而改变。
那么如何摆脱这些警告呢?有没有办法让Gradle告诉SonarQube有关罐子的位置?
谢谢
编辑:我正在使用SonarQube Server 4.1.1,Gradle插件1.23,Sonar插件2.1,Sonar Runner 2.3并gradle --version给出:
------------------------------------------------------------
Gradle 1.10
------------------------------------------------------------
Build time: 2013-12-17 09:28:15 UTC
Build number: none
Revision: 36ced393628875ff15575fa03d16c1349ffe8bb6
Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.9.2 compiled on July 8 2013
Ivy: 2.2.0
JVM: 1.7.0_21 (Oracle Corporation 23.7-b01)
OS: Linux 3.10-2-486 i386
Run Code Online (Sandbox Code Playgroud)
这是构建的完整控制台输出,包括所有警告:链接
詹金斯这样称呼我的build.gradle:

詹金斯这样称呼SonarQube:

编辑:就像Peter Niederwieser所说的那样,让Gradle调用SonarQube摆脱了警告。我的配置的相关部分在这里。
你必须设置sonar.libraries. 但为了手动设置此属性,您必须定义一个 Gradle 任务,将所有外部依赖项复制到 lib 目录,然后用于sonar.libraries=path/to/lib/*.jar引用它们。相反,我会通过 Gradle 插件调用 Sonar ,该插件将为您sonar-runner设置上述属性(以及其他属性)。sonar.libraries
| 归档时间: |
|
| 查看次数: |
13253 次 |
| 最近记录: |