2017-11-11 16 views
1
내가 빌드 프로세스 내 Gradle을로 열기 클로버를 통합하려고 다음과 같은 가이드 다음되었다

: - :Gradle을 멀티 프로젝트 - OpenClover

* * What went wrong: 
A problem occurred evaluating root project 'Enjin-Coin-Java-SDK'. 
> Could not find method cloverCompile() for arguments [org.openclover:clover:4.2.0] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.. 
build.gradle에 추가 할 때

나는 다음과 같은 오류가 발생했습니다

내 build.gradle 파일은 다음과 같다 :

01을 다음과 같이 util.gradle의

buildscript { 
    repositories { 
     mavenCentral() 
     maven { url 'https://plugins.gradle.org/m2/' } 
    } 
     dependencies { 
     classpath 'org.openclover:clover:4.2.0' 
    } 
} 

plugins { 
    id 'com.github.johnrengelman.shadow' version '1.2.4' 
    id 'java' 
} 

sourceSets { 
    clover { 
     java { 
      srcDir "$buildDir/sources-instr" 
     } 
    } 
} 

apply from: 'gradle/util.gradle' 

subprojects { 
    apply plugin: 'eclipse' 
    apply plugin: 'idea' 
    apply plugin: 'java' 
    apply plugin: 'maven' 
    apply plugin: 'com.github.johnrengelman.shadow' 

    group = 'com.myproject' 
    version = '0.0.1-SNAPSHOT' 

    idea { 
     module { 
      scopes.PROVIDED.plus += [configurations.shadow] 
     } 
    } 

    tasks.build.dependsOn(shadowJar) 
    artifacts.archives shadowJar 

    tasks.withType(AbstractCompile) { 
     classpath += configurations.shadow 
    } 

    ext { 
     mockito = '2.9.0' 
     junit = '4.12' 
     powermock = '1.7.3' 
    } 

    repositories { 
     mavenLocal() 
     mavenCentral() 
    } 

    dependencies { 
     // testCompile dependencies 
     testCompile group: 'org.mockito', name: 'mockito-core', version: mockito 
     testCompile group: 'junit', name: 'junit', version: junit 
     testCompile group: 'org.powermock', name: 'powermock-api-mockito2', version: powermock 
     testCompile group: 'org.powermock', name: 'powermock-module-junit4', version: powermock 
     cloverCompile 'org.openclover:clover:4.2.0' 
    } 



    jar { 
     archiveName = "${project.name}-slim.jar" 
    } 

    shadowJar { 
     archiveName = "${project.name}.jar" 
    } 

    install { 
     repositories.mavenInstaller { 
      pom.artifactId = "sdk-${project.name}" 
     } 
    } 
} 

configurations { 
    cloverRuntime 
    cloverRuntime.extendsFrom cloverCompile 
} 

task cloverInstr() { 
    inputs.files sourceSets.main.allJava 
    outputs.dir "$buildDir/sources-instr" 

    doFirst { 
    def argsList = ["--initstring", "${buildDir}/clover/clover.db", "-d", "${buildDir}/sources-instr"] 
    argsList.addAll(inputs.files.files.collect({ file -> 
     file.absolutePath 
    })) 
    String[] args = argsList.toArray() 

    com.atlassian.clover.CloverInstr.mainImpl(args) 
    } 
} 

cloverClasses.dependsOn cloverInstr 

test { 
    def cloverClasspath = configurations.testRuntime + configurations.cloverRuntime + sourceSets.test.output + sourceSets.clover.output 
    classpath = cloverClasspath 
} 

task cloverReport { 
    inputs.dir "${buildDir}/clover" 
    outputs.dir "${reportsDir}/clover" 
    onlyIf { 
     file("${buildDir}/clover/clover.db").exists() 
    } 
    doFirst { 
     def argsList = ["--initstring", "${buildDir}/clover/clover.db", 
         "-o", "${reportsDir}/clover"] 
     String[] args = argsList.toArray() 
     com.atlassian.clover.reporters.html.HtmlReporter.runReport(args) 
    } 
} 

내용은

ext.scriptFile = { 
    String fileName -> 
     return new File(new File(rootDir, 'gradle'), fileName) 
} 

누구든지 문제를 해결하는 방법에 대해 도움을 줄 수 있습니까?

답변

2

프로젝트에 클로버를 통합하는 다음 스크립트를 사용하여 수동 통합을위한 필요가 없습니다

buildscript { 
    repositories { 
     mavenCentral() 
     maven { url 'https://plugins.gradle.org/m2/' } 
     jcenter() 
    } 
} 

plugins { 
    id 'com.github.johnrengelman.shadow' version '1.2.4' 
    id "com.bmuschko.clover" version "2.1.3" 
} 

apply from: 'gradle/util.gradle' 

subprojects { 
    apply plugin: 'eclipse' 
    apply plugin: 'idea' 
    apply plugin: 'java' 
    apply plugin: 'maven' 
    apply plugin: 'com.github.johnrengelman.shadow' 
    apply plugin: 'com.bmuschko.clover' 

    group = 'com.myproject' 
    version = '0.0.1-SNAPSHOT' 

    idea { 
     module { 
      scopes.PROVIDED.plus += [configurations.shadow] 
     } 
    } 

    tasks.build.dependsOn(shadowJar) 
    artifacts.archives shadowJar 

    tasks.withType(AbstractCompile) { 
     classpath += configurations.shadow 
    } 

    ext { 
     mockito = '2.9.0' 
     junit = '4.12' 
     powermock = '1.7.3' 
    } 

    repositories { 
     mavenLocal() 
     mavenCentral() 
    } 

    dependencies { 
     // testCompile dependencies 
     testCompile group: 'org.mockito', name: 'mockito-core', version: mockito 
     testCompile group: 'junit', name: 'junit', version: junit 
     testCompile group: 'org.powermock', name: 'powermock-api-mockito2', version: powermock 
     testCompile group: 'org.powermock', name: 'powermock-module-junit4', version: powermock 
     clover 'org.openclover:clover:4.2.0' 
    } 

    jar { 
     archiveName = "${project.name}-slim.jar" 
    } 

    shadowJar { 
     archiveName = "${project.name}.jar" 
    } 

    install { 
     repositories.mavenInstaller { 
      pom.artifactId = "sdk-${project.name}" 
     } 
    } 
} 

즉시 사용할 수있는 플러그인을 사용할 수있는 경우.

+0

그 문제는 해결되었지만 다른 문제는 해결되었습니다. - 게시글을 build.gradle 파일에 포함시키고 build.gradle과 새로운 오류 – Damien

+0

@Damien의 내용을 포함하도록 게시물을 업데이트했습니다. 어떤 일을하는지 모를 것입니다. 맞습니까? 클로버가 통합 되려면 루트 프로젝트 또는 서브 프로젝트가 필요합니까? 또한 왜 플러그인을 사용하지 않고 수동으로 클로버를 통합하기로 결정 했습니까? – Opal

+0

나는 멍청이 질문에 사과 할 정도로 새 단다. 나는 지금까지 메이븐에서 일했다. 모든 하위 프로젝트를 계측 할 수 있도록 루트 프로젝트에 클로버를 설치하고 싶습니다. 이전에 maven에서 이것을 수행했습니다. – Damien