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:
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
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