Grails 3: интеграция gradle-clover-plugin
Кто-нибудь имел успех в интеграции Gradle-Clover-плагин с Grails 3? Самое близкое, что у меня есть к build.gradle:
clover {
additionalSourceDirs = [new File("src/main/groovy"), new File("grails-app")] as Set
additionalTestDirs = [new File("src/test/groovy/"), new File("src/integration-test/groovy")] as Set
includes = ['/*.groovy', '/.java']
testIncludes = ['/Spec.java']
report {
html = true
xml = true
}
}
Тест-приложение Grails:
[clover-clean] Clover Version 3.2.0, built on October 21 2013 (build-908)
[clover-clean] Loaded from: C:\Users\abc3\.gradle\caches\modules-2\files-2.1\com.cenqua.clover\clover\3.2.0\e09feecf14644d92003ab037c30e483cf86b3e82\clover-3.2.0.jar
[clover-clean] Clover: Commercial License registered to Abc Inc.
[clover-setup] Clover Version 3.2.0, built on October 21 2013 (build-908)
[clover-setup] Loaded from: C:\Users\abc3\.gradle\caches\modules-2\files-2.1\com.cenqua.clover\clover\3.2.0\e09feecf14644d92003ab037c30e483cf86b3e82\clover-3.2.0.jar
[clover-setup] Clover: Commercial License registered to Abc Inc.
[clover-setup] Clover is enabled with initstring 'C:\Users\abc3\MyApp\build/.clover/clover.db-test'
[javac] : warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] : warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[copy] Copied 2 empty directories to 2 empty directories under C:\Users\abc3\MyApp\build\classes\main
[copy] Copied 2 empty directories to 2 empty directories under C:\Users\abc3\MyApp\build\classes\test
[move] Moving 14 files to C:\Users\abc3\MyApp\build\classes
[move] Moved 3 empty directories to 1 empty directory under C:\Users\abc3\MyApp\build\classes
[move] Moving 4 files to C:\Users\abc3\MyApp\build\classes
[move] Moved 3 empty directories to 1 empty directory under C:\Users\abc3\MyApp\build\classes
:compileIntegrationTestJava UP-TO-DATE
:compileIntegrationTestGroovy UP-TO-DATE
:processIntegrationTestResources UP-TO-DATE
:integrationTestClasses UP-TO-DATE
:integrationTest UP-TO-DATE
:mergeTestReports UP-TO-DATE
Клевер, кажется, работает, но я не получаю никаких отчетов.
Ничего не создано в C:\Users\abc3\MyApp\build/.clover; У меня нет каталога.clover.
- Версия Grails: 3.1.10
- Groovy версия: 2.4.7
- Версия JVM: 1.8.0_71
Есть идеи?
Спасибо
отметка
3 ответа
Я использовал Gradle-Clover-Plugin для приложения Grails 3.2.4 (в котором использовалась оболочка Gradle 3.0). Это работает, и все, что я сделал в build.gradle
файл был:
Сначала добавьте зависимость classpath:
buildscript {
dependencies {
classpath 'com.bmuschko:gradle-clover-plugin:2.1.0'
}
}
Затем, применяя плагин:
apply plugin: 'com.bmuschko.clover'
Затем добавляем зависимость клевера:
dependencies {
clover 'org.openclover:clover:4.2.0'
}
Затем добавим некоторую конфигурацию:
clover {
// Although Clover is now open source the plugin
// still expects to find the license file.
// Any file will work.
licenseLocation = File.createTempFile('clover', '.license').absolutePath
// This is neededed to see which tests targeted code
// In this particular project I'm only using Spock
// specifications
testIncludes = ['**/*Spec.groovy']
// I would like to have both html and xml report
report {
html = true
xml = true
}
}
И, наконец, выполнить:
./gradlew cloverGenerateTestReport
Я мог бы заставить его работать с Grails 3.3.2 и Gradle 4.4, но это была утомительная задача. Вот что я сделал:
gradle.properties
grailsVersion=3.3.2 gormVersion=6.1.8.RELEASE gradleWrapperVersion=4.4 org.gradle.jvmargs=-Xms256m -Xmx2048m
build.gradle
apply plugin: 'java' apply plugin: 'com.bmuschko.clover' dependencies { clover 'org.openclover:clover:4.2.0' ... compile 'org.codehaus.groovy:groovy-all:2.4.7' ... } sourceSets.main.output.classesDir = new File(buildDir, "classes/main") integrationTest.testClassesDirs = sourceSets.integrationTest.output.classesDirs clover { licenseLocation = File.createTempFile('clover', '.license').absolutePath excludes = ['**/Application.groovy', '**/BootStrap.groovy', '**/UrlMappings.groovy', '**/*GrailsPlugin.groovy', '**/*Mock.groovy', ] testIncludes = ['**/*Spec.groovy'] report { html = true xml = true } }
Я надеюсь, что это поможет вам.
Grails-Clover-Plugin работает с Grails 1 и 2, которые основаны на Gant. Grails 3 основан на Gradle, поэтому плагин несовместим.
Для Grails 3 я бы попытался написать интеграцию Clover-Gradle в скрипте сборки Gradle, а не пытаться использовать плагин grails-clover-plugin.
Пожалуйста, взгляните на фрагмент кода, недавно опубликованный на этой странице:
https://confluence.atlassian.com/display/CLOVER/Gradle+Clover+Plugin