Hi Mick,

A complete working example, as per how I achieved the results I was looking
for, is as follows  (now including cobertura reporting):
Hope it helps!

=============================


apply plugin: 'java'

// http://www.gradle.org/java_plugin.html
// http://www.gradle.org/multi_project_builds.html


if (getProject().properties['codeCoverageProvider']==null)
getProject().setProperty('codeCoverageProvider',
'/mnt/data/bin/cobertura-1.9.4.1')


def buildTime = new java.util.Date()


configurations{
    zkm
instrumentation
}



dependencies {
instrumentation files("${project.buildDir}/cobertura-instrumentation")
 testRuntime files("${codeCoverageProvider}/cobertura.jar")
testCompile files("${buildLibs}/junit.jar")
 zkm files(zelix_lib)
compile files("${buildLibs}/xstream-1.3.1.jar")
}




sourceSets {
    main {
        java {
            srcDir 'src'
        }
        resources {
            srcDir 'src'
        }
    }

    test {
        java {
            srcDir 'test'
        }
        resources {
            srcDir 'test'
        }

        runtimeClasspath = configurations.instrumentation + runtimeClasspath
    }
}



test{
workingDir = new File("${junitWorkingDir}")
ignoreFailures = true
 systemProperties['net.sourceforge.cobertura.datafile'] =
"${project.buildDir}/cobertura.ser"
}




task obfuscate(dependsOn: classes) << {
 javaexec { // as per
http://mrhaki.blogspot.com/2010/09/gradle-goodness-run-java-application.html
    main = 'ZKM'
    classpath = configurations.zkm + sourceSets.main.runtimeClasspath
    args "$projectDir/script.txt"
    jvmArgs "-DSaveAllDir=$buildDir/obfuscated-classes-extra"
 }
}

task jar(dependsOn: obfuscate, type: Jar, overwrite: true){ // we provide
our own main jar task
    manifest.from("src/META-INF/MANIFEST.MF") // because our main jar
should be obfuscated
    manifest.attributes 'Build-Time': buildTime.toString()
    from project.sourceSets.main.resources
    from "$buildDir/obfuscated-classes-extra"
}


task unobfuscatedJar(dependsOn: classes, type: Jar) { // we also provide an
extra jar task, to provide our unobfuscated jar
       baseName = "${project.name}-unobfuscated"
       manifest.from("src/META-INF/MANIFEST.MF")
       manifest.attributes 'Build-Time': buildTime.toString()
       from "$buildDir/classes/main"
}



test.doFirst { // coverage

 println "Setting up cobertura code coverage instrumentation"

ant.taskdef(resource:'tasks.properties') {
 classpath {
pathelement(location:"${codeCoverageProvider}/cobertura.jar")
 fileset(dir:"${codeCoverageProvider}/lib", includes:'*.jar')
}
 }

println "instrumentation to: ${project.buildDir}/cobertura-instrumentation"

ant.'cobertura-instrument'(toDir:
"${project.buildDir}/cobertura-instrumentation", datafile:
"${project.buildDir}/cobertura.ser"){
 fileset(dir: "${sourceSets.main.classesDir}"){
include(name: "**/*.class")
 }
}
}


test.doLast{

 println "Writing cobertura report"

ant.'cobertura-report'(destdir: "${project.buildDir}/cobertura-report",
datafile: "${project.buildDir}/cobertura.ser"){
 sourceSets.main.java.srcDirs.each { dir ->

if (dir.isDirectory()){
 fileset(dir: "${dir}"){
include(name: "**/*.java")
 }
}
}
 }
}

Reply via email to