Как применить плагин Cobertura ко всем проектам или всем подпроектам

Я пытаюсь применить плагин 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'
}

person jjNford    schedule 24.03.2015    source источник


Ответы (2)


Вот как должен выглядеть build.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'net.saliman:gradle-cobertura-plugin:2.2.7'
    }
}

allprojects {
    apply plugin: 'net.saliman.cobertura'  
}
person Opal    schedule 24.03.2015

Вы также можете обнаружить, что хотите объединить все отчеты 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

person dawogfather    schedule 11.03.2016