X-Git-Url: http://plrg.eecs.uci.edu/git/?p=jpf-core.git;a=blobdiff_plain;f=build.gradle;h=26ff9ba74b6d0990113f8bc4660cd9943672547b;hp=3457b90e0eb08ce8c36436d790892b16865a1a5c;hb=f5ce0dc8b32aad58a543397deada4febfccf9c87;hpb=33bf7444bbe18b51597fb80ae30b6a480328915f diff --git a/build.gradle b/build.gradle index 3457b90..26ff9ba 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,239 @@ -ant.importBuild "build.xml" +apply plugin: "java" -task check { - description = "This is a dummy task" +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + +repositories { + mavenCentral() +} + +buildscript { + repositories { + maven { + url "https://plugins.gradle.org/m2/" + } + } + dependencies { + classpath "gradle.plugin.com.palantir.gradle.gitversion:gradle-git-version:0.11.0" + } +} + +dependencies { + testImplementation "junit:junit:4.12" +} + +apply plugin: "com.palantir.git-version" +version gitVersion() +def gitDetails = versionDetails() + +ext.manifestCommonAttrbutes = manifest { + attributes( + "Built-By": System.getProperty("user.name"), + "Implementation-Vendor": "NASA Ames Research Center", + "Specification-Version": gitDetails.lastTag, + "Implementation-Version": gitDetails.gitHashFull + ) +} + +apply from: "gradle/ide-support.gradle" +apply from: "gradle/distribution.gradle" +apply from: "gradle/source-sets.gradle" +apply from: "gradle/build-resources.gradle" + +task compile { + group = "JPF Build" + description = "Compiles all JPF core sources." + + // These are automatic generated tasks from the Java Gradle Plugin. + // Gradle is able to infer the order of the source sets + // due to the compileClasspath attribute + dependsOn compileTestJava + dependsOn compileExamplesJava +} + +task createJpfClassesJar(type: Jar) { + archiveName = "jpf-classes.jar" + destinationDir = file("${buildDir}") + + group = "JPF Jars" + description = "Creates the ${archiveName} file." + + dependsOn compile + dependsOn copyResources + + from sourceSets.classes.java.outputDir + from sourceSets.annotations.java.outputDir + from(sourceSets.main.java.outputDir) { + include "gov/nasa/jpf/JPFShell.class" + include "gov/nasa/jpf/vm/Verify.class" + include "gov/nasa/jpf/util/TypeRef.class" + include "gov/nasa/jpf/util/test/TestJPF.class" + include "gov/nasa/jpf/util/test/TestMultiProcessJPF.class" + include "gov/nasa/jpf/util/test/TestJPFHelper.class" + } +} + +task createJpfJar(type: Jar) { + archiveName = "jpf.jar" + destinationDir = file("${buildDir}") + + group = "JPF Jars" + description = "Creates the ${archiveName} file." + + dependsOn compile + dependsOn copyResources + + from sourceSets.main.java.outputDir + from sourceSets.peers.java.outputDir + from sourceSets.annotations.java.outputDir + from(sourceSets.classes.java.outputDir) { + include "org/junit/*.class" + } + + manifest { + attributes "Implementation-Title": "Java Pathfinder core system" + from manifestCommonAttrbutes + } +} + +task createAnnotationsJar(type: Jar) { + archiveName = "jpf-annotations.jar" + destinationDir = file("${buildDir}") + + group = "JPF Jars" + description = "Creates the ${archiveName} file." + + dependsOn compile + dependsOn copyResources + + from sourceSets.annotations.java.outputDir } + +task createClassloaderSpecificTestsJar(type: Jar) { + archiveName = "classloader_specific_tests.jar" + destinationDir = file("${buildDir}") + + group = "JPF Jars" + description = "Creates the ${archiveName} file." + + dependsOn compile + dependsOn copyResources + + from(sourceSets.test.java.outputDir) { + include "classloader_specific_tests/*.class" + } +} + +task createRunJpfJar(type: Jar) { + archiveName = "RunJPF.jar" + destinationDir = file("${buildDir}") + + description = "Creates the ${archiveName} file." + group = "JPF Jars" + + dependsOn compile + dependsOn copyResources + + from(sourceSets.main.java.outputDir) { + include "gov/nasa/jpf/tool/Run.class" + include "gov/nasa/jpf/tool/RunJPF.class" + include "gov/nasa/jpf/Config.class" + include "gov/nasa/jpf/ConfigChangeListener.class" + include "gov/nasa/jpf/Config\$MissingRequiredKeyException.class" + include "gov/nasa/jpf/JPFClassLoader.class" + include "gov/nasa/jpf/JPFShell.class" + include "gov/nasa/jpf/JPFException.class" + include "gov/nasa/jpf/JPFConfigException.class" + include "gov/nasa/jpf/JPFTargetException.class" + include "gov/nasa/jpf/util/JPFSiteUtils.class" + include "gov/nasa/jpf/util/FileUtils.class" + include "gov/nasa/jpf/util/StringMatcher.class" + include "gov/nasa/jpf/util/Pair.class" + } + manifest { + attributes( + "Implementation-Title": "Java Pathfinder core launch system", + "Main-Class": "gov.nasa.jpf.tool.RunJPF" + ) + from manifestCommonAttrbutes + } +} + +task createRunTestJar(type: Jar) { + archiveName = "RunTest.jar" + destinationDir = file("${buildDir}") + + description = "Creates the ${archiveName} file." + group = "JPF Jars" + + dependsOn compile + dependsOn copyResources + + from(sourceSets.main.java.outputDir) { + include "gov/nasa/jpf/tool/Run.class" + include "gov/nasa/jpf/tool/RunTest.class" + include "gov/nasa/jpf/tool/RunTest\$Failed.class" + include "gov/nasa/jpf/Config.class" + include "gov/nasa/jpf/ConfigChangeListener.class" + include "gov/nasa/jpf/Config\$MissingRequiredKeyException.class" + include "gov/nasa/jpf/JPFClassLoader.class" + include "gov/nasa/jpf/JPFException.class" + include "gov/nasa/jpf/JPFConfigException.class" + include "gov/nasa/jpf/util/JPFSiteUtils.class" + include "gov/nasa/jpf/util/FileUtils.class" + include "gov/nasa/jpf/util/StringMatcher.class" + include "gov/nasa/jpf/util/DevNullPrintStream.class" + } + manifest { + attributes( + "Implementation-Title": "Java Pathfinder test launch system", + "Main-Class": "gov.nasa.jpf.tool.RunTest" + ) + from manifestCommonAttrbutes + } +} + +task buildJars { + group = "JPF Build" + description = "Generates all core JPF jar files." + + dependsOn createClassloaderSpecificTestsJar + dependsOn createAnnotationsJar + dependsOn createJpfClassesJar + dependsOn createJpfJar + dependsOn createRunJpfJar + dependsOn createRunTestJar +} + +test { + description = "Runs core regression tests." + + dependsOn buildJars + + forkEvery = 1 + enableAssertions = true + maxHeapSize = "1024m" + + include "**/*Test.class" + exclude "**/SplitInputStreamTest.class" + exclude "**/JPF_*.class" + + testLogging { + events "passed", "skipped", "failed" + } + + afterSuite { testDescriptor, result -> + if (!testDescriptor.parent) { + println "Test Execution: ${result.resultType}" + + def summaryFields = ["${result.testCount} tests", + "${result.successfulTestCount} passed", + "${result.failedTestCount} failed", + "${result.skippedTestCount} skipped"] + + println "Summary: " + summaryFields.join(", ") + } + } +} + +defaultTasks "buildJars"