aboutsummaryrefslogtreecommitdiff
path: root/build.gradle
blob: 2dd171791b08041dc4214098a6f3caefd2fc0f27 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
 buildfile for gradle (http://gradle.org/)
*/

apply plugin: 'java'

buildDir = "$projectDir/build-gradle"

dependencies {
  compile fileTree(dir: 'lib', include: '*.jar')
}



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

compileJava.options.debugOptions.debugLevel = "source,lines,vars"


project.ext.instrumentDir = "$buildDir/classes_instrumented"
project.ext.coberturaDir = "$projectDir/cobertura"
project.ext.coverageData = "$projectDir/coverage.data"
project.ext.coverageReportDir = "$projectDir/coverage-report"

task instrument (dependsOn: 'compileJava', type: JavaExec) {
  inputs.dir compileJava.destinationDir
  outputs.dir fileTree(dir: instrumentDir)

  classpath = files("$coberturaDir/cobertura.jar", "$coberturaDir/lib/*")
  main = 'net.sourceforge.cobertura.instrument.Main'

  args "--datafile", "$coverageData"
  args "--destination", "$instrumentDir"

  doFirst {
    FileTree tree = fileTree(dir: "$buildDir/classes/main/")
    tree.visit { element ->
      args "$buildDir/classes/main/$element.path"
    }
  }
}


task testCoverage (dependsOn: ['instrument'], type: Test) {
  classpath = files("$instrumentDir",
                    "$coberturaDir/cobertura.jar",
                    project.sourceSets.test.runtimeClasspath)
  systemProperties = ["net.sourceforge.cobertura.datafile":"$coverageData"]
}


testCoverage.outputs.file("$coverageData")

task reportCoverage (type: JavaExec) {
  description = "Reports code coverage."
  doFirst {
    classpath = files("$projectDir/cobertura/cobertura.jar",
                      "$projectDir/cobertura/lib/*")
    main = 'net.sourceforge.cobertura.reporting.Main'
    args "--datafile", "$coverageData"
    args "--destination", "$coverageReportDir"
    args "$projectDir/src/"
  }
}

reportCoverage.inputs.file("$coverageData")
reportCoverage.outputs.dir("$coverageReportDir")

reportCoverage.dependsOn testCoverage

/*
TODO: should we really use the compile task for this?
*/
task msgtypes (type: JavaCompile) {
  description = "Updates the index of GNUnet message types known to gnunet-java."
  classpath = project.sourceSets.main.runtimeClasspath
  source = files(project.sourceSets.main.allJava)
  options.setCompilerArgs(["-processor", "org.gnunet.construct.MessageIdAnnotationProcessor",
                           "-proc:only",
                           "-s", "src"])
  destinationDir = file("$buildDir/classes/main/")
}


project.ext.installerFile = "$projectDir/gnunet-java-installer.jar"

task installer (type: Exec) {
  description "build an IZPack installer for gnunet-java"
  workingDir "$projectDir"

  outputs.file("$installerFile")
}

installer.dependsOn "build","javadoc"

installer.outputs.upToDateWhen { false }

installer.doFirst {
  def izpack = System.getenv("IZPACK_COMPILER")
  if (izpack == null) {
    throw new RuntimeException("environment variable IZPACK_COMPILER not defined")
  }
  installer.commandLine "$izpack", "$projectDir/izpack-installer.xml", "-o", "$installerFile"
}