修复了“无法通过ClassLoader访问Class”。Jenkins,SonarQube和Gradle警告

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.23Sonar插件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詹金斯致电build.gradle

詹金斯这样称呼SonarQube: 詹金斯致电SonarQube


编辑:就像Peter Niederwieser所说的那样,让Gradle调用SonarQube摆脱了警告。我的配置的相关部分在这里

Pet*_*ser 3

你必须设置sonar.libraries. 但为了手动设置此属性,您必须定义一个 Gradle 任务,将所有外部依赖项复制到 lib 目录,然后用于sonar.libraries=path/to/lib/*.jar引用它们。相反,我会通过 Gradle 插件调用 Sonar ,该插件将为您sonar-runner设置上述属性(以及其他属性)。sonar.libraries