cobertura + gradle - 为什么我不能执行cobertura任务?

时间:2017-01-23 11:53:57

标签: gradle cobertura

我正在处理多个项目gradle项目,主build.gradle是这样的:

buildscript {
repositories {
    mavenLocal()
    mavenCentral()
}
    dependencies {
        classpath 'net.saliman:gradle-cobertura-plugin:2.2.4'
    }
}

plugins {
    id "org.sonarqube" version "2.2.1"
}

apply plugin: 'groovy'
apply plugin: 'cobertura'

def getVersionName = { ->
    def stdout = new ByteArrayOutputStream()
    exec {
        commandLine 'git', 'describe', '--tags', '--always'
        standardOutput = stdout
    }
    return stdout.toString().trim()
}

ext {
    springFrameworkVersion = '4.3.4.RELEASE'
}

subprojects {
    apply plugin: 'eclipse'
    apply plugin: 'idea'
    apply plugin: 'java'
    apply from: "${parent.projectDir.canonicalPath}/cobertura.gradle"

    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    repositories {
        mavenCentral()
    }

    dependencies {
        compile("org.springframework:spring-context:${springFrameworkVersion}")

        testCompile("junit:junit:4.+")
        testCompile("org.springframework:spring-test:${springFrameworkVersion}")
    }
    jar {
        version = getVersionName()
    }
}

project(':projectA') {

}

project(':projectB') {
   dependencies {
            compile project(':projectA')
        }
    }

project(':projectC') {
    dependencies {
        compile project(':projectB')
    }
}

cobertura {
    coverageFormats = ['html', 'xml']
    coverageIgnoreTrivial = true
    coverageIgnores = ['org.slf4j.Logger.*']
    coverageReportDir = new File("$buildDir/reports/cobertura")
}

但是当我尝试使用cobertura任务运行gradle包装器时,它失败并且控制台输出是:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':instrument'.
> Could not resolve all dependencies for configuration ':cobertura'.
   > Cannot resolve external dependency net.sourceforge.cobertura:cobertura:2.0.3 because no repositories are defined.
     Required by:
         :main-project:unspecified

这里发生了什么?

1 个答案:

答案 0 :(得分:2)

就像错误消息告诉你的那样。

你已经在你的根项目中声明了对net.sourceforge.cobertura:cobertura:2.0.3的依赖(因为它没有明确添加,我猜Gradle cobertura插件隐式添加它,它的文档可能应该这样说)但是你没有为您的根项目定义的任何存储库。您只为buildcript(解决Gradle插件和内容)以及subprojects闭包中的所有子项目声明了存储库。同时为根项目定义存储库,或者使用allprojects闭包,您的构建应该可以正常工作,至少在这方面。