Fixes default method resolution (#159)
[jpf-core.git] / build.gradle
1 apply plugin: "java"
2
3 def getCurrentVersion() {
4     "DEVELOPMENT-SNAPSHOT"
5 }
6
7 version = currentVersion
8
9 sourceCompatibility = 1.8
10 targetCompatibility = 1.8
11
12 repositories {
13     mavenCentral()
14 }
15
16 dependencies {
17     testImplementation "junit:junit:4.12"
18 }
19
20 ext.manifestCommonAttrbutes = manifest {
21     attributes(
22         "Built-By": System.getProperty("user.name"),
23         "Implementation-Vendor": "NASA Ames Research Center",
24         "Implementation-Version": version
25     )
26 }
27
28 apply from: "gradle/ide-support.gradle"
29 apply from: "gradle/distribution.gradle"
30 apply from: "gradle/source-sets.gradle"
31 apply from: "gradle/build-resources.gradle"
32
33 task compile {
34     group = "JPF Build"
35     description = "Compiles all JPF core sources."
36
37     // These are automatic generated tasks from the Java Gradle Plugin.
38     // Gradle is able to infer the order of the source sets
39     // due to the compileClasspath attribute
40     dependsOn compileTestJava
41     dependsOn compileExamplesJava
42 }
43
44 task createJpfClassesJar(type: Jar) {
45     archiveName = "jpf-classes.jar"
46     destinationDir = file("${buildDir}")
47
48     group = "JPF Jars"
49     description = "Creates the ${archiveName} file."
50
51     dependsOn compile
52     dependsOn copyResources
53
54     from sourceSets.classes.java.outputDir
55     from sourceSets.annotations.java.outputDir
56     from(sourceSets.main.java.outputDir) {
57         include "gov/nasa/jpf/JPFShell.class"
58         include "gov/nasa/jpf/vm/Verify.class"
59         include "gov/nasa/jpf/util/TypeRef.class"
60         include "gov/nasa/jpf/util/test/TestJPF.class"
61         include "gov/nasa/jpf/util/test/TestMultiProcessJPF.class"
62         include "gov/nasa/jpf/util/test/TestJPFHelper.class"
63     }
64 }
65
66 task createJpfJar(type: Jar) {
67     archiveName = "jpf.jar"
68     destinationDir = file("${buildDir}")
69
70     group = "JPF Jars"
71     description = "Creates the ${archiveName} file."
72
73     dependsOn compile
74     dependsOn copyResources
75
76     from sourceSets.main.java.outputDir
77     from sourceSets.peers.java.outputDir
78     from sourceSets.annotations.java.outputDir
79     from(sourceSets.classes.java.outputDir) {
80         include "org/junit/*.class"
81     }
82
83     manifest {
84         attributes "Implementation-Title": "Java Pathfinder core system"
85         from manifestCommonAttrbutes
86     }
87 }
88
89 task createAnnotationsJar(type: Jar) {
90     archiveName = "jpf-annotations.jar"
91     destinationDir = file("${buildDir}")
92
93     group = "JPF Jars"
94     description = "Creates the ${archiveName} file."
95
96     dependsOn compile
97     dependsOn copyResources
98
99     from sourceSets.annotations.java.outputDir
100 }
101
102 task createClassloaderSpecificTestsJar(type: Jar) {
103     archiveName = "classloader_specific_tests.jar"
104     destinationDir = file("${buildDir}")
105
106     group = "JPF Jars"
107     description = "Creates the ${archiveName} file."
108
109     dependsOn compile
110     dependsOn copyResources
111
112     from(sourceSets.test.java.outputDir) {
113         include "classloader_specific_tests/*.class"
114     }
115 }
116
117 task createRunJpfJar(type: Jar) {
118     archiveName = "RunJPF.jar"
119     destinationDir = file("${buildDir}")
120
121     description = "Creates the ${archiveName} file."
122     group = "JPF Jars"
123
124     dependsOn compile
125     dependsOn copyResources
126
127     from(sourceSets.main.java.outputDir) {
128         include "gov/nasa/jpf/tool/Run.class"
129         include "gov/nasa/jpf/tool/RunJPF.class"
130         include "gov/nasa/jpf/Config.class"
131         include "gov/nasa/jpf/ConfigChangeListener.class"
132         include "gov/nasa/jpf/Config\$MissingRequiredKeyException.class"
133         include "gov/nasa/jpf/JPFClassLoader.class"
134         include "gov/nasa/jpf/JPFShell.class"
135         include "gov/nasa/jpf/JPFException.class"
136         include "gov/nasa/jpf/JPFConfigException.class"
137         include "gov/nasa/jpf/JPFTargetException.class"
138         include "gov/nasa/jpf/util/JPFSiteUtils.class"
139         include "gov/nasa/jpf/util/FileUtils.class"
140         include "gov/nasa/jpf/util/StringMatcher.class"
141         include "gov/nasa/jpf/util/Pair.class"
142     }
143     manifest {
144         attributes(
145             "Implementation-Title": "Java Pathfinder core launch system",
146             "Main-Class": "gov.nasa.jpf.tool.RunJPF"
147         )
148         from manifestCommonAttrbutes
149     }
150 }
151
152 task createRunTestJar(type: Jar) {
153     archiveName = "RunTest.jar"
154     destinationDir = file("${buildDir}")
155
156     description = "Creates the ${archiveName} file."
157     group = "JPF Jars"
158
159     dependsOn compile
160     dependsOn copyResources
161
162     from(sourceSets.main.java.outputDir) {
163         include "gov/nasa/jpf/tool/Run.class"
164         include "gov/nasa/jpf/tool/RunTest.class"
165         include "gov/nasa/jpf/tool/RunTest\$Failed.class"
166         include "gov/nasa/jpf/Config.class"
167         include "gov/nasa/jpf/ConfigChangeListener.class"
168         include "gov/nasa/jpf/Config\$MissingRequiredKeyException.class"
169         include "gov/nasa/jpf/JPFClassLoader.class"
170         include "gov/nasa/jpf/JPFException.class"
171         include "gov/nasa/jpf/JPFConfigException.class"
172         include "gov/nasa/jpf/util/JPFSiteUtils.class"
173         include "gov/nasa/jpf/util/FileUtils.class"
174         include "gov/nasa/jpf/util/StringMatcher.class"
175         include "gov/nasa/jpf/util/DevNullPrintStream.class"
176     }
177     manifest {
178         attributes(
179             "Implementation-Title": "Java Pathfinder test launch system",
180             "Main-Class": "gov.nasa.jpf.tool.RunTest"
181         )
182         from manifestCommonAttrbutes
183     }
184 }
185
186 task buildJars {
187     group = "JPF Build"
188     description = "Generates all core JPF jar files."
189
190     dependsOn createClassloaderSpecificTestsJar
191     dependsOn createAnnotationsJar
192     dependsOn createJpfClassesJar
193     dependsOn createJpfJar
194     dependsOn createRunJpfJar
195     dependsOn createRunTestJar
196 }
197
198 test {
199     description = "Runs core regression tests."
200
201     dependsOn buildJars
202
203     forkEvery = 1
204     enableAssertions = true
205     maxHeapSize = "1024m"
206
207     include "**/*Test.class"
208     exclude "**/SplitInputStreamTest.class"
209     exclude "**/JPF_*.class"
210
211     testLogging {
212         events "passed", "skipped", "failed"
213     }
214
215     afterSuite { testDescriptor, result ->
216         if (!testDescriptor.parent) {
217             println "Test Execution: ${result.resultType}"
218
219             def summaryFields = ["${result.testCount} tests",
220                                  "${result.successfulTestCount} passed",
221                                  "${result.failedTestCount} failed",
222                                  "${result.skippedTestCount} skipped"]
223
224             println "Summary: " + summaryFields.join(", ")
225         }
226     }
227 }
228
229 defaultTasks "buildJars"