这是我的build.gradle
:
plugins {
id 'net.saliman.cobertura' version '2.3.1'
}
apply plugin: 'groovy'
apply plugin: 'idea'
repositories {
mavenCentral()
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
compile(
'org.codehaus.groovy:groovy-all:2.4.6'
)
testCompile(
'org.spockframework:spock-core:1.0-groovy-2.4'
)
}
cobertura {
coverageCheckTotalLineRate = 95
coverageCheckHaltOnFailure = true
}
如您所见,我已设置Gradle Cobertura插件。通常通过以下方式构建我的应用程序:
./gradlew build
但要运行Cobertura,我必须运行一个完全不同的调用:
./gradlew cobertura coberturaCheck
我想压缩这些,以便运行./gradlew build
也运行这2个Cobertura任务。
如何重新配置我的版本,以便在所有测试完成后./gradlew build
也运行./gradlew cobertura coberturaCheck
?
答案 0 :(得分:1)
我已经快速浏览了Cobertura插件的来源 测试必须为Cobertura等运行的依赖项都是由插件正确设置的,因此正确的顺序应该被认为是正确的。
实际上,Test
类型的所有任务都是以这样的方式设置的,即Cobertura报告生成始终在它们之后运行以及覆盖检查。默认情况下,这些任务只是被禁用。
将coberturaCheck
添加到要执行的任务图中可启用所有cobertura任务,包括覆盖检查任务。
将cobertura
添加到任务图可启用除覆盖检查任务之外的所有cobertura任务。因此,如果您已将coberturaCheck
添加到任务图表中,则添加cobertura
的唯一影响是它取决于Test
类型的所有任务。
在项目中,Test
类型的唯一任务是名为test
的任务,该任务已依赖于check
所依赖的build
,它是足以依赖coberturaCheck
启用cobertura任务,因此只需在构建文件中build.dependsOn coberturaCheck
,或者如果您更喜欢check.dependsOn coberturaCheck
。
如果您仍然希望依赖cobertura
,因为您可能担心将来添加Test
类型的任务而不依赖于任务check
,您可以当然也这样做。这看起来像build.dependsOn tasks.cobertura, coberturaCheck
或check.dependsOn tasks.cobertura, coberturaCheck
。
tasks.
的额外cobertura
是必要的,因为在查找名为cobertura
的任务之前还会有一个名为cobertura
的项目扩展名,因此您必须明确说明你想要这里的任务。