我正在编写一个自定义Gradle插件,它将统一地从我的自定义Gradle配置中抽象出来,这些配置分布在多个Java项目中。为此,我通常尝试为需要自定义配置的各种任务找到合适的扩展。
所以,我到了我想将JaCoCo配置移动到插件的地步。摘自build。Gradle是这样的:
jacocoTestReport {
reports {
xml.required = true
}
}
第一部分是可管理的:检查插件是否被加载。
project.getPlugins().withType(JacocoPlugin.class, jacocoPlugin -> {
// configure it
})
然而,我被如何通过扩展方法实际配置插件所困扰。唯一可用的扩展名似乎是JacocoPluginExtension
。从那里,我没有看到如何从build.gradle中添加reports
部分的方法。
是否有一些其他机制除了扩展,我错过了?
'jacocoTestReport'实际上是一个任务,所以您可以这样配置它:
proj.tasks.getByName("jacocoTestReport", {
reports {
xml.required = true
}
})
如果你想深入挖掘,它的类是JacocoReport,它有一个JacocoReportsContainer报告属性,所以你可以从那里使用类型安全的属性getter/setter,但我认为上面的解决方案更像是构建。Gradle,这样更可读。