这是我的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
? 最佳答案
我快速浏览了Cobertura插件的来源。
插件必须正确设置测试必须在Cobertura之前运行的依赖项,因此应该按照正确的顺序进行操作。
实际上,实际上所有Test
类型的任务都是以这样的方式设置的:始终在它们执行Cobertura Report生成以及覆盖率检查之后运行。这些任务默认情况下只是被禁用。
将coberturaCheck
添加到要执行的任务图将启用所有cobertura任务,包括覆盖率检查任务。
将cobertura
添加到任务图可启用所有cobertura任务,但覆盖率检查任务除外。因此,如果您已经将coberturaCheck
添加到任务图中,则添加cobertura
的唯一作用是取决于Test
类型的所有任务。
正如在您的项目中,Test
类型的唯一任务是名为test
的任务,该任务已经依赖于check
,而build
依赖于coberturaCheck
,它足以依赖build.dependsOn coberturaCheck
来启用cobertura任务,因此只需在构建文件中执行check.dependsOn coberturaCheck
,或者,如果您更喜欢cobertura
,
但是,如果您还想依赖Test
,因为您可能担心将来会添加check
类型的任务,而这些任务不受任务build.dependsOn tasks.cobertura, coberturaCheck
的依赖,那么您当然也可以这样做。这看起来像check.dependsOn tasks.cobertura, coberturaCheck
或tasks.
。
额外的cobertura
的cobertura
是必需的,因为还有一个名为cobertura
的项目扩展,在寻找名为ojit_code的任务之前需要先进行扩展,因此您必须在此处明确声明要使用该任务。
关于gradle - 添加Gradle插件任务以构建调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37419559/