gpt4 book ai didi

gradle - 构建 doLast 未在多模块构建上执行

转载 作者:行者123 更新时间:2023-12-03 04:17:26 24 4
gpt4 key购买 nike

我有一个多模块 gradle 构建,我正在尝试聚合 jacoco 报告,但我希望它在构建完成时发生,我不想将它添加到终端中 gradle 命令的末尾。下面是我如何配置 build.gradle 的片段:

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

如果我在 doLast 中放置一个简单的 println,它将打印它,但如果我将 println's 放入 jacoco 报告任务中,则不会打印任何内容。
我也尝试过使用 build.finalizedBy ,这导致同样缺乏执行。我做错了什么?
在子任务 build.finalizedBy 内工作正常,但在子任务外似乎没有任何工作。

* 编辑 *
这是根报告的实际代码。
我尝试使用 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
}
}

最佳答案

我将构建任务更新为依赖而不是 doLast。这就是我想要的。
如果有更好的方法来完成我想要的,请随时纠正我。

task build {
dependsOn tasks.jacocoRootReport
}

我尝试使用 build.finalizedBy(jacocoRootReport) 并收到以下错误:

unknown property 'build' in root project

关于gradle - 构建 doLast 未在多模块构建上执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53656286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com