La fixation de la Classe n'est pas accessible via le chargeur de classe.' avertissement avec Jenkins, SonarQube, et Gradle
Lors de SonarQube analyse de mon projet Java qui est construit à l'aide de Gradle et Jenkins, je reçois beaucoup de mises en garde à propos des bibliothèques tierces ne sont pas accessibles par le chargeur de classe:
WARN - Class 'org/slf4j/Logger' is not accessible through the ClassLoader.
WARN - Class 'com/google/gson/Gson' is not accessible through the ClassLoader.
Ces bibliothèques sont tous inscrits sur la liste des dépendances dans mon construire.gradle.
J'ai lu ici sur l'utilisation de l' sonar.libraries
de la propriété où j'avais donner un chemin vers le Pot. Mais parce que Gradle téléchargements de ces dépendances pour moi, les chemins de ressembler à ça sur ma machine: /home/siberut/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.5/6b262da268f8ad9eff941b25503a9198f0a0ac93/slf4j-api-1.7.5.jar
.
Et les chemins changent à chaque nouvelle version de la bibliothèque.
Alors, comment puis-je obtenir-je me débarrasser de ces avertissements? Est-il peut-être une façon de laisser Gradle dire SonarQube sur l'emplacement des Pots?
Grâce
Edit:
Je suis l'aide de SonarQube Serveur 4.1.1, Plugin Gradle 1.23, Sonar Plugin 2.1, Sonar Coureur 2.3 et gradle --version
donne:
------------------------------------------------------------
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
Voici la sortie de la console de construire, y compris tous les avertissements: Lien
Jenkins appelle mon build.gradle comme ceci:
Jenkins appelle SonarQube comme ceci:
Edit: Juste comme Peter Niederwieser dit, laisser Gradle invoquer SonarQube se débarrasser d'avertissements. La partie pertinente de ma configuration est ici.
J'ai ajouté les versions de mes plugins.
Je ne comprends pas ce que tu veux dire par
Gradle Plugin 1.23, Sonar Plugin 2.1, Sonar Runner 2.3
. Où obtenez-vous de choisir ces versions? J'étais simplement vous demander si vous utilisez Gradle la vieille sonar
plugin ou de la nouvelle sonar-runner
plugin. (Vous aurez besoin de celui-ci.) Ou vous n'utilisez pas de Gradle est intégré dans Sonar soutien à tous?Désolé de ne pas être assez clair. Ces plugins sont Jenkins plugins. Jenkins appelle SonarQube, Gradle construit le projet et appelle Jacoco. J'ai ajouté mon
build.gradle
et deux captures d'écran de ma configuration de build Jenkins dans la dernière édition. Merci pour votre persévérance.la première exécution de gradle but de compiler puis exécuter sonar
OriginalL'auteur Matthias Braun | 2014-02-14
Vous devez vous connecter pour publier un commentaire.
Vous aurez à
sonar.libraries
. Mais dans le but de définir cette propriété manuellement, vous devez définir un Gradle tâche qui copie toutes les dépendances externes à un répertoire lib, et ensuite utilisersonar.libraries=path/to/lib/*.jar
de référence. Au lieu de cela, je voudrais invoquer Sonar via lesonar-runner
plugin Gradle, qui prendra soin de fixer les propriétés ci-dessus (plussonar.libraries
et autres) pour vous.gradle sonarRunner
rend les avertissements de disparaître. J'ai un follow-question si vous n'avez pas l'esprit.Je ne suis pas familier avec le Jenkins, Sonar plugin, et je ne sais pas si il y a une solution. Il devrait y avoir une méthode générique permettant d'ajouter des liens à l'Jenkins page du projet.
Quand je lance sonar-runner, il se plaint de ne pas être en mesure de trouver les fichiers de classe pour jacoco plugin qui est inclus avec SonarQube. Quand j'définir explicitement les binaires de la propriété dans le dossier avec les fichiers de classe, il commence à donner moi les erreurs du type en question. Que suggérez-vous que je devrais faire?
Lors de l'utilisation de sonarRunner est-il possible d'ajouter d'autres bibliothèques que gradle ne l'a pas fait, par exemple avec Java 8 JavaFX .les fichiers de classe de jfxrt.jar ne semblent pas obtenir ramassé automatiquement....
OriginalL'auteur Peter Niederwieser
Suivantes résolu ce problème pour moi dans
build.gradle
OriginalL'auteur schnatterer