Je cherchais sur Internet et demandais sur des chats IRC mais aucun d’entre eux n’était ou n’a donné de réponse pour avoir tenté de résoudre mon problème.
J'essaie de faire en sorte que mon projet utilise JaCoCo
sur Intellij
IDE, les tests vont être effectués sur un serveur Jenkins
, j'ai défini certains paramètres dans mon fichier gradle.build pour JaCoCo
, mais la compilation de génération échoue en disant Could not set unknown property 'classDumpFile' for object of type org.gradle.testing.jacoco.plugins.JacocoTaskExtension.
Le fichier de construction est comme ça:
version '1.0-SNAPSHOT'
apply plugin: 'Java'
apply plugin: 'jacoco'
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
}
jacoco{
toolVersion = '0.7.6.201602180812'
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
testCompile group: 'org.Apache.httpcomponents', name: 'httpclient', version: '4.5.5'
compile group: 'mysql', name: 'mysql-connector-Java', version: '5.1.6'
compile group: 'org.json', name: 'json', version: '20180130'
}
test{
jacoco {
append = false
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
classDumpFile = file("$buildDir/jacoco/classpathdumps")
}
}
ceci est un fichier de niveau généré par IntelliJ
lors de la création du projet et j’ai ajouté quelques dépendances manuellement. Le développeur qui gère le serveur jenkins
m'a dit d’utiliser ces paramètres JaCoCo
pour que sonarQube
fonctionne correctement. IntelliJ
ne parvient pas à effectuer de compilation, lors de la soumission du code à Jenkins
, cela fonctionne bien.
J'ai cherché pourquoi cela se produit et j'ai découvert que cela pourrait être dû à la version de Gradle et que je devrais utiliser classDumpDir
à la place, cela permet à IntelliJ
de fonctionner mais le serveur Jenkins
ne parvient pas à générer le projet.
Je pense que cela pourrait être dû à la version de Gradle ou à quelque chose, mais j'apprends toujours comment travailler avec Java
et IntelliJ
, d'autres développeurs travaillent avec Eclipse
et ils n'obtiennent pas cette erreur, mais je ne veux pas passer à Eclipse
parce que je suis déjà trop à l'aise avec IntelliJ
Si nécessaire, voici les versions que j'utilise:
Après de longues heures de recherche, de test et d’échec, j’ai enfin trouvé le moyen de résoudre ce problème.
J'ai découvert dans le répertoire gradle/wrapper
il y a un fichier avec les propriétés de gradle, dans ce fichier il y avait une variable qui définit quel gradle utiliser et sur mon fichier il était configuré pour utiliser gradle 4.5:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.5-all.Zip
j'ai demandé à l'ingénieur de DevOps quelle version de jenkins utilise et il a dit qu'il devrait être 3.0, donc j'ai changé la valeur distributionUrl
pour utiliser la version 3.0 et cela fonctionne
On dirait qu'ils ont changé la variable, de classDumpFile à classDumpDir.
test {
jacoco {
append = false
**classDumpDir** = file("$buildDir/jacoco/classpathdumps")
}
}
Cela a fonctionné pour moi