У меня возникла проблема с gradle и jacoco, где gradle clean build
завершается неудачей с jacocoagent.jar
, отсутствующим во время выполнения задач - compileTestJava
и Test
.
При изучении проблемы я обнаружил, что при удаленииПапка build в папке .gradle и запуск команды - gradle build
или gradle test
, папка ' build ' будет создана заново, и необходим jacocoagent .jar 'для покрытия кода также создается в папке' / build / tmp / extendedArchives / '.
Но если я запускаю gradle clean build
или gradle clean test
, папка ' build ' удаляется и создается снова, но папка ' extendedArchives ' в папке '/ build / tmp 'местоположение не создается и, следовательно, тесты завершаются неудачно с ошибкой ниже -
Ошибка открытия zip-файла или отсутствует манифест JAR: build / tmp / extendedArchives / org.jacoco.agent-0.8.4.jar_7bfc4fd986d61dbf92065775ff3714a0 / jacocoagent.jar
Вот полная трассировка стека для complieTestJava и тестовых заданий:
> Task :compileTestJava
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Could not write standard input to Gradle Test Executor 2.
java.io.IOException: The pipe is being closed
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:326)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
at org.gradle.process.internal.streams.ExecOutputHandleRunner.forwardContent(ExecOutputHandleRunner.java:66)
at org.gradle.process.internal.streams.ExecOutputHandleRunner.run(ExecOutputHandleRunner.java:51)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:748)
> Task :test
Error occurred during initialization of VM
agent library failed to init: instrument
Error opening zip file or JAR manifest missing : build/tmp/expandedArchives/org.jacoco.agent-0.8.4.jar_7bfc4fd986d61dbf92065775ff3714a0/jacocoagent.jar
Error occurred during initialization of VM
agent library failed to init: instrument
Error opening zip file or JAR manifest missing : build/tmp/expandedArchives/org.jacoco.agent-0.8.4.jar_7bfc4fd986d61dbf92065775ff3714a0/jacocoagent.jar
Could not write standard input to Gradle Test Executor 3.
java.io.IOException: The pipe is being closed
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:326)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
at org.gradle.process.internal.streams.ExecOutputHandleRunner.forwardContent(ExecOutputHandleRunner.java:66)
at org.gradle.process.internal.streams.ExecOutputHandleRunner.run(ExecOutputHandleRunner.java:51)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:748)
Есть ли какие-либо сведения, что здесь может пойти не так?
Ниже приведены подробности моей среды сборки:
- Gradle - 5.6.2
- Jacoco - 0.8.4
- Java- 1.8.0.181
- IntelliJ - 2019.2.3 (Ultimate Edition)
- ОС - Windows 7 Enterprise
Сценарий сборки
Я не могу добавить весь скрипт сборки здесь, но ниже приведены задачи, связанные с jacoco:
jacoco {
toolVersion = "0.8.4"
}
test {
exclude "features/**"
exclude "**/*IntegrationTests*"
}
jacocoTestReport {
reports {
xml.enabled false
csv.enabled false
html.destination file("${buildDir}/jacocoHtml")
}
}
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
counter = 'LINE'
value = 'COVEREDRATIO'
minimum = 0.75
}
}
}
}
jacocoTestCoverageVerification.mustRunAfter jacocoTestReport
test.finalizedBy jacocoTestReport