Adding ParameterizedTypeImpl to getGenericSuperclass method.
[jpf-core.git] / build.gradle
index 0dc9c6986d150ab51fcb2e0cb94ec9072562d25f..26ff9ba74b6d0990113f8bc4660cd9943672547b 100644 (file)
@@ -7,162 +7,59 @@ repositories {
     mavenCentral()
 }
 
-dependencies {
-    testImplementation "junit:junit:4.12"
-}
-
-sourceSets {
-    annotations {
-        java.srcDirs = ["src/annotations"]
-        java.outputDir = file("${buildDir}/annotations")
-    }
-    main {
-        java.srcDirs = ["src/main"]
-        java.outputDir = file("${buildDir}/main")
-        compileClasspath += sourceSets.annotations.output
-    }
-    examples {
-        java.srcDirs = ["src/examples"]
-        java.outputDir = file("${buildDir}/examples")
-        compileClasspath += sourceSets.main.output
-    }
-    classes {
-        java.srcDirs = ["src/classes"]
-        java.outputDir = file("${buildDir}/classes")
-        compileClasspath += sourceSets.main.output + sourceSets.annotations.output
-    }
-    peers {
-        java.srcDirs = ["src/peers"]
-        java.outputDir = file("${buildDir}/peers")
-        compileClasspath += sourceSets.main.output + sourceSets.annotations.output
+buildscript {
+    repositories {
+       maven {
+            url "https://plugins.gradle.org/m2/"
+        }
     }
-    test {
-        java.srcDirs = ["src/tests"]
-        java.outputDir = file("${buildDir}/tests")
-        compileClasspath += sourceSets.annotations.output + sourceSets.classes.output + sourceSets.peers.output
-        runtimeClasspath += compileClasspath
+    dependencies {
+        classpath "gradle.plugin.com.palantir.gradle.gitversion:gradle-git-version:0.11.0"
     }
 }
 
-clean {
-    group = "JPF Build"
+dependencies {
+    testImplementation "junit:junit:4.12"
 }
 
-task generateVersion {
-    description = "Generates the .version file with the current revision hash"
-    group = "JPF Build Properties"
+apply plugin: "com.palantir.git-version"
+version gitVersion()
+def gitDetails = versionDetails()
 
-    doLast {
-        def revision = "git rev-parse HEAD".execute().text
-        new File(".version").withWriter("utf-8") { writer ->
-            writer.writeLine revision
-        }
-    }
+ext.manifestCommonAttrbutes = manifest {
+    attributes(
+        "Built-By": System.getProperty("user.name"),
+        "Implementation-Vendor": "NASA Ames Research Center",
+        "Specification-Version": gitDetails.lastTag,
+        "Implementation-Version": gitDetails.gitHashFull
+    )
 }
 
-task buildInfo {
-    group = "JPF Build Properties"
-    description = "Creates build info properties."
-    doLast {
+apply from: "gradle/ide-support.gradle"
+apply from: "gradle/distribution.gradle"
+apply from: "gradle/source-sets.gradle"
+apply from: "gradle/build-resources.gradle"
 
-        // Must fail if there are uncommitted changes
-        def status  = "git status --short".execute().text.trim()
-        if (!status.isEmpty()) {
-            throw new GradleException("There are uncomitted changes:\n " + status)
-        }
-        Properties info = new Properties()
-
-        def revision = "git rev-parse --short HEAD".execute().text.trim()
-        def userName = ["git", "log", "-1", "--format=%an <%ae>"].execute().text.trim()
-        def date = "git log -1 --format=%ci".execute().text.trim()
-
-        info.setProperty("revision", revision)
-        info.setProperty("date", date)
-        info.setProperty("author", userName)
-        info.setProperty("os.arch", System.getProperty("os.arch"))
-        info.setProperty("os.name", System.getProperty("os.name"))
-        info.setProperty("user.country", System.getProperty("user.country"))
-        info.setProperty("java.version", System.getProperty("java.version"))
-
-        def writer = new File("build.properties").newWriter("utf-8")
-        info.store(writer, "JPF core build info")
-        writer.close()
-
-        // Copies generated build.properties file to the build directory
-        from "build.properties"
-        into sourceSets.main.java.outputDir.path + "/gov/nasa/jpf"
-    }
-}
-
-task compile(type: Copy) {
+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 ordering of the source sets
+    // Gradle is able to infer the order of the source sets
     // due to the compileClasspath attribute
-    dependsOn compileTestJava, compileExamplesJava, generateVersion
-
-    // Copies .version file to the build directory
-    from ".version"
-    into sourceSets.main.java.outputDir.path + "/gov/nasa/jpf"
-}
-
-task srcDist(type: Zip) {
-    group = "JPF Build"
-    description = "Builds the source distribution"
-
-    baseName = project.name
-    version = "git rev-parse --short HEAD".execute().text.trim()
-    classifier = "src"
-    extension = "zip"
-
-    destinationDir = buildDir
-    includeEmptyDirs = false
-
-    from projectDir
-    include "build.gradle"
-    include "settings.gradle"
-    include "gradlew"
-    include "gradlew.bat"
-    include "gradle/**/*"
-    include "nbproject/**/*"
-    include "eclipse/**/*"
-    include "src/**/*"
-    include "bin/**/*"
-    include "jpf.properties"
-    include "build.properties"
-    include "LICENSE-2.0.txt"
-    include "README.md"
+    dependsOn compileTestJava
+    dependsOn compileExamplesJava
 }
 
-task dist(type: Zip) {
-    group = "JPF Build"
-    description = "Builds binary distribution"
-
-    baseName = project.name
-    version = "git rev-parse --short HEAD".execute().text.trim()
-    extension = "zip"
-
-    destinationDir = buildDir
-    includeEmptyDirs = false
-
-    from projectDir
-    include "jpf.properties"
-    include "build.properties"
-    include "bin/**/*"
-    include "lib/**/*"
-    include "${buildDir.name}/**/*.jar"
-}
-
-task jpfClassesJar(type: Jar) {
+task createJpfClassesJar(type: Jar) {
     archiveName = "jpf-classes.jar"
     destinationDir = file("${buildDir}")
 
-    description = "Creates the ${archiveName} file."
     group = "JPF Jars"
+    description = "Creates the ${archiveName} file."
 
     dependsOn compile
+    dependsOn copyResources
 
     from sourceSets.classes.java.outputDir
     from sourceSets.annotations.java.outputDir
@@ -176,14 +73,15 @@ task jpfClassesJar(type: Jar) {
     }
 }
 
-task jpfJar(type: Jar) {
+task createJpfJar(type: Jar) {
     archiveName = "jpf.jar"
     destinationDir = file("${buildDir}")
 
-    description = "Creates the ${archiveName} file."
     group = "JPF Jars"
+    description = "Creates the ${archiveName} file."
 
     dependsOn compile
+    dependsOn copyResources
 
     from sourceSets.main.java.outputDir
     from sourceSets.peers.java.outputDir
@@ -193,42 +91,40 @@ task jpfJar(type: Jar) {
     }
 
     manifest {
-        attributes(
-            "Built-By": System.getProperty("user.name"),
-            "Implementation-Vendor": "NASA Ames Research Center",
-            "Implementation-Title": "Java Pathfinder core system",
-            "Implementation-Version": "1234" //FIXME
-        )
+        attributes "Implementation-Title": "Java Pathfinder core system"
+        from manifestCommonAttrbutes
     }
 }
 
-task annotationsJar(type: Jar) {
+task createAnnotationsJar(type: Jar) {
     archiveName = "jpf-annotations.jar"
     destinationDir = file("${buildDir}")
 
-    description = "Creates the ${archiveName} file."
     group = "JPF Jars"
+    description = "Creates the ${archiveName} file."
 
     dependsOn compile
+    dependsOn copyResources
 
     from sourceSets.annotations.java.outputDir
 }
 
-task classloaderSpecificTestsJar(type: Jar) {
+task createClassloaderSpecificTestsJar(type: Jar) {
     archiveName = "classloader_specific_tests.jar"
     destinationDir = file("${buildDir}")
 
-    description = "Creates the ${archiveName} file."
     group = "JPF Jars"
+    description = "Creates the ${archiveName} file."
 
     dependsOn compile
+    dependsOn copyResources
 
     from(sourceSets.test.java.outputDir) {
         include "classloader_specific_tests/*.class"
     }
 }
 
-task runJpfJar(type: Jar) {
+task createRunJpfJar(type: Jar) {
     archiveName = "RunJPF.jar"
     destinationDir = file("${buildDir}")
 
@@ -236,6 +132,7 @@ task runJpfJar(type: Jar) {
     group = "JPF Jars"
 
     dependsOn compile
+    dependsOn copyResources
 
     from(sourceSets.main.java.outputDir) {
         include "gov/nasa/jpf/tool/Run.class"
@@ -255,16 +152,14 @@ task runJpfJar(type: Jar) {
     }
     manifest {
         attributes(
-            "Built-By": System.getProperty("user.name"),
-            "Implementation-Vendor": "NASA Ames Research Center",
             "Implementation-Title": "Java Pathfinder core launch system",
-            "Implementation-Version": "1234", //FIXME
             "Main-Class": "gov.nasa.jpf.tool.RunJPF"
         )
+        from manifestCommonAttrbutes
     }
 }
 
-task runTestJar(type: Jar) {
+task createRunTestJar(type: Jar) {
     archiveName = "RunTest.jar"
     destinationDir = file("${buildDir}")
 
@@ -272,6 +167,7 @@ task runTestJar(type: Jar) {
     group = "JPF Jars"
 
     dependsOn compile
+    dependsOn copyResources
 
     from(sourceSets.main.java.outputDir) {
         include "gov/nasa/jpf/tool/Run.class"
@@ -290,35 +186,32 @@ task runTestJar(type: Jar) {
     }
     manifest {
         attributes(
-            "Built-By": System.getProperty("user.name"),
-            "Implementation-Vendor": "NASA Ames Research Center",
             "Implementation-Title": "Java Pathfinder test launch system",
-            "Implementation-Version": "1234", // FIXME
             "Main-Class": "gov.nasa.jpf.tool.RunTest"
         )
+        from manifestCommonAttrbutes
     }
 }
 
 task buildJars {
     group = "JPF Build"
-    description = "Generates the core JPF jar files."
+    description = "Generates all core JPF jar files."
 
-    dependsOn buildInfo
-
-    dependsOn classloaderSpecificTestsJar, annotationsJar,
-              jpfClassesJar, jpfJar, runJpfJar,
-              runTestJar
+    dependsOn createClassloaderSpecificTestsJar
+    dependsOn createAnnotationsJar
+    dependsOn createJpfClassesJar
+    dependsOn createJpfJar
+    dependsOn createRunJpfJar
+    dependsOn createRunTestJar
 }
 
 test {
-    group = "JPF Build"
     description = "Runs core regression tests."
 
     dependsOn buildJars
 
-    enableAssertions = true
     forkEvery = 1
-
+    enableAssertions = true
     maxHeapSize = "1024m"
 
     include "**/*Test.class"