apply plugin: "java" def getCurrentVersion() { "DEVELOPMENT-SNAPSHOT" } version = currentVersion sourceCompatibility = 1.8 targetCompatibility = 1.8 repositories { mavenCentral() } dependencies { testImplementation "junit:junit:4.12" } ext.manifestCommonAttrbutes = manifest { attributes( "Built-By": System.getProperty("user.name"), "Implementation-Vendor": "NASA Ames Research Center", "Implementation-Version": version ) } 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"