it-swarm.com.de

Gradle: Die unbekannte Eigenschaft 'classDumpFile' konnte in Intellij nicht festgelegt werden

Ich habe im Internet gesucht und in den irc-Chats nachgefragt, aber keiner von ihnen gab oder gab keine Antwort darauf, dass ich mein Problem lösen wollte.

Ich versuche mein Projekt so zu gestalten, dass es JaCoCo on Intellij IDE verwendet, die Tests werden in einem Jenkins Server durchgeführt, ich habe einige Einstellungen in meiner gradle.build-Datei für JaCoCo aber Build-Kompilierung schlägt fehl und sagt Could not set unknown property 'classDumpFile' for object of type org.gradle.testing.jacoco.plugins.JacocoTaskExtension.

Die Build-Datei sieht folgendermaßen aus:

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")
    }
}

dies ist eine gradle-Datei, die von IntelliJ beim Erstellen des Projekts generiert wurde, und ich habe einige Abhängigkeiten manuell hinzugefügt. Nun hat mir der Entwickler, der den jenkins Server verwaltet, gesagt, ich solle diese JaCoCo Einstellungen für verwenden sonarQube funktioniert gut, IntelliJ macht keine Kompilierung, aber wenn Sie den Code an Jenkins übergeben, funktioniert das einwandfrei.

Ich habe gesucht, warum dies geschieht, und ich habe herausgefunden, dass dies möglicherweise auf die gradle-Version zurückzuführen ist. Stattdessen sollte classDumpDir verwendet werden. Dies macht IntelliJ aber der Jenkins-Server kann das Projekt nicht erstellen .

Ich glaube, das liegt möglicherweise an einer gradle-Version oder etwas, aber ich lerne immer noch, wie man mit Java und IntelliJ arbeitet, andere Entwickler arbeiten mit Eclipse und sie bekommen diesen Fehler nicht Ich möchte nicht zu Eclipse wechseln, weil ich mich mit IntelliJ schon zu wohl fühle

Falls notwendig, sind hier die Versionen, die ich verwende:

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

Nach langen Stunden des Suchens, Testens und Versagens habe ich endlich den Weg gefunden, dieses Problem zu beheben.

Ich habe im Verzeichnis gradle/wrapper herausgefunden, dass es eine Datei mit den Gradle-Eigenschaften gibt. In dieser Datei gab es eine Variable, die definiert, welches Gradle verwendet werden soll.

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

ich habe den DevOps-Ingenieur gefragt, welche Gradle-Version Jenkins verwendet, und er sagte, es sollte 3.0 sein. Daher änderte ich den Wert für distributionUrl in Version 3.0 und es funktioniert

2
Oscar Reyes

Sieht aus, als hätten Sie die Variable geändert, von classDumpFile in classDumpDir.

test {
    jacoco {
        append = false
        **classDumpDir** = file("$buildDir/jacoco/classpathdumps")
    }
}

Das hat bei mir funktioniert

6
djgooner