【问题标题】:How to apply Cobertura plugin to all projects or all subprojects如何将 Cobertura 插件应用于所有项目或所有子项目
【发布时间】:2015-05-28 03:50:32
【问题描述】:
我正在尝试将 Cobertura 插件应用于我的 Gradle 构建脚本中的所有项目和子项目。但是,脚本在应用于所有时无法找到插件。这是我所拥有的:
buildscript {
repositories {
jcenter()
}
}
allprojects {
beforeEvaluate {
project.buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'net.saliman:gradle-cobertura-plugin:2.2.7'
}
}
}
}
subprojects {
apply plugin: 'net.saliman.cobertura'
}
【问题讨论】:
标签:
maven
groovy
gradle
android-gradle-plugin
build-script
【解决方案1】:
build.gradle 应该是这样的:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'net.saliman:gradle-cobertura-plugin:2.2.7'
}
}
allprojects {
apply plugin: 'net.saliman.cobertura'
}
【解决方案2】:
您可能还想将所有子项目的 cobertura 报告合并为一个用于整个项目的精美顶级报告。
要做到这一点,我相信你需要 cobertura gradle 插件 2.2+,其配置类似于:
// note - all non-cobertura config is stripped out of this example
allprojects {
apply plugin: 'cobertura'
}
subprojects {
cobertura {
coverageIgnoreTrivial = true
}
}
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "net.saliman:gradle-cobertura-plugin:2.2.2"
}
}
def files = subprojects.collect { new File(it.projectDir, '/build/cobertura/cobertura.ser') }
cobertura {
coverageFormats = [ 'xml', 'html' ]
coverageSourceDirs = subprojects.sourceSets.main.allSource.srcDirs.flatten()
coverageMergeDatafiles = files
}
test.dependsOn(subprojects.test)
来自 syncsynchalt 对这里问题的精彩评论:
https://github.com/stevesaliman/gradle-cobertura-plugin/issues/10