web-dev-qa-db-fra.com

Titre: impossible de définir la propriété inconnue 'classDumpFile' dans Intellij

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:

  • Version CLI Gradle: 2.10
  • Version Java: Ubuntu openjdk 1.8.0_151
  • Version IntelliJ: 2017.3.4 Community Edition
8
Oscar Reyes

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

2
Oscar Reyes

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

6
djgooner