-apply plugin: "java"
+plugins {
+ id "java"
+ id "eclipse"
+}
+
+def getCurrentVersion() {
+ "DEVELOPMENT-SNAPSHOT"
+}
+
+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()
}
}
task generateVersion {
- group = "JPF Resources"
+ group = "JPF Build Resources"
description = "Generates the .version file with the current revision hash"
doLast {
def revision = "git rev-parse HEAD".execute().text
}
}
-task buildInfo {
- group = "JPF Resources"
- description = "Creates build info properties."
+task generateBuildInfo {
+ group = "JPF Build Resources"
+ description = "Generates the build.properties file."
doLast {
- // 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 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()
}
task copyResources(type: Copy) {
- group = "JPF Resources"
+ group = "JPF Build Resources"
description = "Copies .version and build.properties files to the build directory."
- dependsOn buildInfo
+ dependsOn generateBuildInfo
dependsOn generateVersion
from "build.properties"
into sourceSets.main.java.outputDir.path + "/gov/nasa/jpf"
}
-
task compile {
group = "JPF Build"
description = "Compiles all JPF core sources."
}
task srcDist(type: Zip) {
- group = "JPF Build"
- description = "Builds the source distribution"
+ group = "JPF Distribution"
+ description = "Builds the source distribution."
baseName = project.name
- version = "git rev-parse --short HEAD".execute().text.trim()
+ version = project.version
classifier = "src"
extension = "zip"
include "gradlew"
include "gradlew.bat"
include "gradle/**/*"
- include "nbproject/**/*"
- include "eclipse/**/*"
include "src/**/*"
include "bin/**/*"
include "jpf.properties"
}
task dist(type: Zip) {
- group = "JPF Build"
- description = "Builds binary distribution"
+ group = "JPF Distribution"
+ description = "Builds binary distribution."
baseName = project.name
- version = "git rev-parse --short HEAD".execute().text.trim()
+ version = project.version
extension = "zip"
destinationDir = buildDir
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
}
}
-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
}
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
}
}
-task runJpfJar(type: Jar) {
+task createRunJpfJar(type: Jar) {
archiveName = "RunJPF.jar"
destinationDir = file("${buildDir}")
}
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}")
}
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
}
}
group = "JPF Build"
description = "Generates all core JPF jar files."
- dependsOn classloaderSpecificTestsJar
- dependsOn annotationsJar
- dependsOn jpfClassesJar
- dependsOn jpfJar
- dependsOn runJpfJar
- dependsOn runTestJar
+ dependsOn createClassloaderSpecificTestsJar
+ dependsOn createAnnotationsJar
+ dependsOn createJpfClassesJar
+ dependsOn createJpfJar
+ dependsOn createRunJpfJar
+ dependsOn createRunTestJar
}
test {
- group = "JPF Build"
description = "Runs core regression tests."
dependsOn buildJars
}
}
+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"