Я пробовал искать фрагменты сценария сценария Jacoco без инструментов, но не смог найти его. Можно ли использовать онлайн-инструменты Jacoco через сценарии градации? Если да ... Примером этого было бы здорово. Благодарю.Jacoco online instrumentation Градиентный скрипт
ответ
Плагин gradle jacoco не поддерживает автономную аппаратуру, он всегда делает онлайн-инструменты через java-агент.
Если муравей jacoco плагин поддерживает автономный инструментарий, который, вероятно, лучший способ, чтобы получить автономный инструментарий работы в Gradle
Можете ли вы указать сценарий/фрагмент из документа, где он делает автономную аппаратуру .... Я не мог понять сценарий, который выполняет автономную аппаратуру. Я не понял, где он делает это на примерах. Если бы вы могли с помощью фрагментов, которые были бы замечательными. – karthik
Инструментарий с Java-агентом - это прибор на лету. Офлайн-инструментарий не требует Java-агента. И я сомневаюсь, что плагин Gradle поддерживает это, и поэтому, вероятно, вы @karthik не можете найти примеры. – Godin
@LanceJava Думаю, вы можете отредактировать ответ, чтобы избавиться от этой путаницы;) – Godin
Вот пример Gradle сценария, который выполняет автономную аппаратуру с помощью JaCoCo задачи Ant:
apply plugin: 'java'
configurations {
jacoco
jacocoRuntime
}
dependencies {
jacoco group: 'org.jacoco', name: 'org.jacoco.ant', version: '0.7.9', classifier: 'nodeps'
jacocoRuntime group: 'org.jacoco', name: 'org.jacoco.agent', version: '0.7.9', classifier: 'runtime'
testCompile 'junit:junit:4.12'
}
repositories {
mavenCentral()
}
task instrument(dependsOn: ['classes']) {
ext.outputDir = buildDir.path + '/classes-instrumented'
doLast {
ant.taskdef(name: 'instrument',
classname: 'org.jacoco.ant.InstrumentTask',
classpath: configurations.jacoco.asPath)
ant.instrument(destdir: outputDir) {
fileset(dir: sourceSets.main.output.classesDir)
}
}
}
gradle.taskGraph.whenReady { graph ->
if (graph.hasTask(instrument)) {
tasks.withType(Test) {
doFirst {
systemProperty 'jacoco-agent.destfile', buildDir.path + '/jacoco/tests.exec'
classpath = files(instrument.outputDir) + classpath + configurations.jacocoRuntime
}
}
}
}
task report(dependsOn: ['instrument', 'test']) {
doLast {
ant.taskdef(name: 'report',
classname: 'org.jacoco.ant.ReportTask',
classpath: configurations.jacoco.asPath)
ant.report() {
executiondata {
ant.file(file: buildDir.path + '/jacoco/tests.exec')
}
structure(name: 'Example') {
classfiles {
fileset(dir: sourceSets.main.output.classesDir)
}
sourcefiles {
fileset(dir: 'src/main/java')
}
}
html(destdir: buildDir.path + '/reports/jacoco')
}
}
}
Можете подтвердить это. Любая мысль о том, чтобы получить это в официальном плагине? –
@KyleC, только для справки: [Добавить автономную инструментальную поддержку для Gradle Jacoco plugin · Проблема № 2429 · gradle/gradle] (https://github.com/gradle/gradle/issues/2429). –
ИМХО, нет веских оснований для того, чтобы выполнять автономную байтовую аппаратуру. Использование Java-агента (например, JaCoCo) является наиболее простым способом. –
@ G.Demecki Я обычно соглашаюсь, но есть Java toolchains, которые не полностью поддерживают «на лету» инструментарий через Java-агентов (одним из примеров является JamaicaVM в режиме реального времени от Aicas). – AdrianoKF