jacocoagent.jar отсутствует в фазе «чистой сборки» Gradle - PullRequest
0 голосов
/ 27 сентября 2019

У меня возникла проблема с 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
...