From: Jeanderson Candido Date: Tue, 10 Jul 2018 22:43:59 +0000 (-0300) Subject: Organized build script X-Git-Url: http://plrg.eecs.uci.edu/git/?p=jpf-core.git;a=commitdiff_plain;h=783e1675dcfd5178a09a4b93197eb05d4a0d016e;hp=67d3fe6d9a919c2d495d13cf2fbdf8f1839da3b7 Organized build script --- diff --git a/build.gradle b/build.gradle index c8582eb..03f03ef 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,4 @@ -plugins { - id "java" - id "eclipse" -} +apply plugin: "java" def getCurrentVersion() { "DEVELOPMENT-SNAPSHOT" @@ -12,14 +9,6 @@ version = currentVersion sourceCompatibility = 1.8 targetCompatibility = 1.8 -ext.manifestCommonAttrbutes = manifest { - attributes( - "Built-By": System.getProperty("user.name"), - "Implementation-Vendor": "NASA Ames Research Center", - "Implementation-Version": version - ) -} - repositories { mavenCentral() } @@ -28,89 +17,18 @@ 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 - } - test { - java.srcDirs = ["src/tests"] - java.outputDir = file("${buildDir}/tests") - compileClasspath += sourceSets.annotations.output + sourceSets.classes.output + sourceSets.peers.output - runtimeClasspath += compileClasspath - } -} - -task generateVersion { - group = "JPF Build Resources" - description = "Generates the .version file with the current revision hash" - doLast { - def revision = "git rev-parse HEAD".execute().text - new File(".version").withWriter("utf-8") { writer -> - writer.writeLine revision - } - } -} - -task generateBuildInfo { - group = "JPF Build Resources" - description = "Generates the build.properties file." - doLast { - - Properties info = new Properties() - - def status = "git status --short".execute().text.trim() - 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() - } +ext.manifestCommonAttrbutes = manifest { + attributes( + "Built-By": System.getProperty("user.name"), + "Implementation-Vendor": "NASA Ames Research Center", + "Implementation-Version": version + ) } -task copyResources(type: Copy) { - group = "JPF Build Resources" - description = "Copies .version and build.properties files to the build directory." - - dependsOn generateBuildInfo - dependsOn generateVersion - - from "build.properties" - into sourceSets.main.java.outputDir.path + "/gov/nasa/jpf" - - from ".version" - into sourceSets.main.java.outputDir.path + "/gov/nasa/jpf" -} +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" @@ -123,51 +41,6 @@ task compile { dependsOn compileExamplesJava } -task srcDist(type: Zip) { - group = "JPF Distribution" - description = "Builds the source distribution." - - baseName = project.name - version = project.version - classifier = "src" - extension = "zip" - - destinationDir = buildDir - includeEmptyDirs = false - - from projectDir - include "build.gradle" - include "settings.gradle" - include "gradlew" - include "gradlew.bat" - include "gradle/**/*" - include "src/**/*" - include "bin/**/*" - include "jpf.properties" - include "build.properties" - include "LICENSE-2.0.txt" - include "README.md" -} - -task dist(type: Zip) { - group = "JPF Distribution" - description = "Builds binary distribution." - - baseName = project.name - version = project.version - extension = "zip" - - destinationDir = buildDir - includeEmptyDirs = false - - from projectDir - include "jpf.properties" - include "build.properties" - include "bin/**/*" - include "lib/**/*" - include "${buildDir.name}/**/*.jar" -} - task createJpfClassesJar(type: Jar) { archiveName = "jpf-classes.jar" destinationDir = file("${buildDir}") @@ -327,9 +200,8 @@ test { dependsOn buildJars - enableAssertions = true forkEvery = 1 - + enableAssertions = true maxHeapSize = "1024m" include "**/*Test.class" @@ -354,22 +226,4 @@ test { } } -eclipse { - group = "JPF IDE Support" - - project { - natures = ["org.eclipse.buildship.core.gradleprojectnature"] - } - classpath { - defaultOutputDir = buildDir - file { - whenMerged { classpath -> - classpath.entries.findAll{ entry -> entry.kind == "src" }*.every { srcNode -> - srcNode.output = srcNode.output.replace("bin", "${buildDir.name}") - } - } - } - } -} - defaultTasks "buildJars" diff --git a/gradle/build-resources.gradle b/gradle/build-resources.gradle new file mode 100644 index 0000000..272005f --- /dev/null +++ b/gradle/build-resources.gradle @@ -0,0 +1,50 @@ +task generateVersion { + group = "JPF Build Resources" + description = "Generates the .version file with the current revision hash" + doLast { + def revision = "git rev-parse HEAD".execute().text + new File(".version").withWriter("utf-8") { writer -> + writer.writeLine revision + } + } +} + +task generateBuildInfo { + group = "JPF Build Resources" + description = "Generates the build.properties file." + doLast { + + Properties info = new Properties() + + def status = "git status --short".execute().text.trim() + 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() + } +} + +task copyResources(type: Copy) { + group = "JPF Build Resources" + description = "Copies .version and build.properties files to the build directory." + + dependsOn generateBuildInfo + dependsOn generateVersion + + from "build.properties" + into sourceSets.main.java.outputDir.path + "/gov/nasa/jpf" + + from ".version" + into sourceSets.main.java.outputDir.path + "/gov/nasa/jpf" +} diff --git a/gradle/distribution.gradle b/gradle/distribution.gradle new file mode 100644 index 0000000..f01d9ad --- /dev/null +++ b/gradle/distribution.gradle @@ -0,0 +1,45 @@ +task srcDist(type: Zip) { + group = "JPF Distribution" + description = "Builds the source distribution." + + baseName = project.name + version = project.version + classifier = "src" + extension = "zip" + + destinationDir = buildDir + includeEmptyDirs = false + + from projectDir + include "build.gradle" + include "settings.gradle" + include "gradlew" + include "gradlew.bat" + include "gradle/**/*" + include "src/**/*" + include "bin/**/*" + include "jpf.properties" + include "build.properties" + include "LICENSE-2.0.txt" + include "README.md" +} + +task dist(type: Zip) { + group = "JPF Distribution" + description = "Builds binary distribution." + + baseName = project.name + version = project.version + extension = "zip" + + destinationDir = buildDir + includeEmptyDirs = false + + from projectDir + include "jpf.properties" + include "build.properties" + include "bin/**/*" + include "lib/**/*" + include "${buildDir.name}/**/*.jar" +} + diff --git a/gradle/ide-support.gradle b/gradle/ide-support.gradle new file mode 100644 index 0000000..2ce7adb --- /dev/null +++ b/gradle/ide-support.gradle @@ -0,0 +1,19 @@ +apply plugin: "eclipse" + +eclipse { + group = "JPF IDE Support" + + project { + natures = ["org.eclipse.buildship.core.gradleprojectnature"] + } + classpath { + defaultOutputDir = buildDir + file { + whenMerged { classpath -> + classpath.entries.findAll{ entry -> entry.kind == "src" }*.every { srcNode -> + srcNode.output = srcNode.output.replace("bin", "${buildDir.name}") + } + } + } + } +} diff --git a/gradle/source-sets.gradle b/gradle/source-sets.gradle new file mode 100644 index 0000000..76d2ced --- /dev/null +++ b/gradle/source-sets.gradle @@ -0,0 +1,32 @@ +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 + } + test { + java.srcDirs = ["src/tests"] + java.outputDir = file("${buildDir}/tests") + compileClasspath += sourceSets.annotations.output + sourceSets.classes.output + sourceSets.peers.output + runtimeClasspath += compileClasspath + } +}