сборка doLast не выполняется на сборке нескольких модулей - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть многомодульная сборка gradle, и я пытаюсь объединить отчеты jacoco, но я хочу, чтобы это произошло, когда сборка завершится, и я не хочу добавлять ее в конец команды gradle в терминале.Ниже приведен фрагмент того, как я сконфигурировал build.gradle:

subprojects {
    do stuff...
}
task jacocoRootReport(type: JacocoReport, group: 'Coverage reports') {
    configure...
}
task build {
    dependsOn subprojects.build
    doLast {
        jacocoRootReport
    }
}

Если я помещу простую println в doLast, она распечатает его, но если я добавлю println в задачу отчета jacoco, ничего не будет напечатано.Я попытался использовать build.finalizedBy, и это приводит к тому же отсутствию выполнения.Что я делаю неправильно?внутри подзадачи build.finalizedBy работает нормально, но за пределами подзадачи, похоже, ничего не работает.

* EDIT * Здесь приведен фактический код корневого отчета.Я пытался использовать build.finalizedBy, но он не работает в корневом build.gradle, он работает только в подпроектах

task jacocoRootReport(type: JacocoReport, group: 'Coverage reports') {
    println 'start'
    dependsOn = subprojects.test
    additionalSourceDirs = files(subprojects.sourceSets.main.allSource.srcDirs)
    sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs)
    classDirectories = files(subprojects.sourceSets.main.output)
    executionData = files(subprojects.jacocoTestReport.executionData)
    println 'reports'
    reports {
        html.enabled = true
        html.destination "$rootDir/build/reports/coverage/coverge-index"
        xml.enabled = false
        csv.enabled = false
    }
    println 'onlyIf'
    onlyIf = {
        true
    }
    println 'doFirst'
    doFirst {
        executionData = files(executionData.findAll {
            it.exists()
        })
    }
}

task build {
    dependsOn subprojects.build
    doLast {
        jacocoRootReport
    }
}

1 Ответ

0 голосов
/ 07 декабря 2018

Я обновил задачу сборки в зависимости от, а не от doLast.Это делает то, что я хочу.Пожалуйста, не стесняйтесь исправлять меня, если есть лучший способ выполнить то, что я хочу.

task build {
    dependsOn tasks.jacocoRootReport
}

Я попытался использовать build.finalizedBy (jacocoRootReport) и получил следующую ошибку:

неизвестное свойство 'build' в корневом проекте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...