apply plugin: 'eclipse' eclipse.project.natures 'org.eclipse.pde.PluginNature' sourceSets.test.java.srcDirs = ['src'] //////////////////////////////////////////////////////////////////////// // // download and extract "bcel-5.2.jar" // task downloadBcel { ext { version = '5.2' } def archive = "bcel-${version}.tar.gz" outputs.file "$temporaryDir/$archive" doLast { download { src "http://archive.apache.org/dist/jakarta/bcel/binaries/$archive" dest outputs.files.singleFile overwrite true onlyIfModified true useETag false // server does not provide ETags } verifyChecksum { src outputs.files.singleFile checksum '19bffd7f217b0eae415f1ef87af2f0bc' } } } task extractBcel(type: Copy, dependsOn: downloadBcel) { from(tarTree(files(downloadBcel).singleFile)) { include "bcel-${downloadBcel.version}/bcel-${downloadBcel.version}.jar" eachFile { relativePath new RelativePath(!directory, relativePath.lastName) } } into projectDir includeEmptyDirs false outputs.file "bcel-${downloadBcel.version}.jar" } task cleanExtractBcel(type: Delete) { delete files(extractBcel)[0] } clean.dependsOn cleanExtractBcel //////////////////////////////////////////////////////////////////////// // // download "java-cup-11a.jar" // task downloadJavaCup { def archive = 'java-cup-11a.jar' outputs.file "$projectDir/$archive" doLast { download { src "http://www2.cs.tum.edu/projects/cup/$archive" dest outputs.files.singleFile overwrite true onlyIfModified true useETag true } verifyChecksum { src outputs.files.singleFile checksum '2bda8c40abd0cbc295d3038643d6e4ec' } } } task cleanDownloadJavaCup(type: Delete) { delete downloadJavaCup } clean.dependsOn cleanDownloadJavaCup //////////////////////////////////////////////////////////////////////// // // collect "JLex.jar" // task collectJLex(type: Jar) { from project(':com.ibm.wala.cast.java.test.data').compileTestJava include 'JLex/' baseName 'JLex' version null destinationDir projectDir } task cleanCollectJLex(type: Delete) { delete collectJLex } clean.dependsOn cleanCollectJLex //////////////////////////////////////////////////////////////////////// // // generate "hello_hash.jar" // task downloadOcamlJava { def version = '2.0-alpha1' ext.basename = "ocamljava-$version" def archive = "${basename}.tar.gz" outputs.file "$temporaryDir/$archive" doLast { download { src "http://www.ocamljava.org/downloads/download.php?version=$version-bin" dest outputs.files.singleFile overwrite true onlyIfModified true useETag true } verifyChecksum { src outputs.files.singleFile checksum '45feec6e3889f5073a39c2c4c84878d1' } } } task unpackOcamlJava(type: Sync, dependsOn: downloadOcamlJava) { from tarTree(files(downloadOcamlJava).singleFile) into temporaryDir } task generateHelloHash(type: JavaExec, dependsOn: unpackOcamlJava) { inputs.file 'ocaml/hello_hash.ml' outputs.file 'hello_hash.jar' args inputs.files.singleFile, '-o', outputs.files.singleFile def ocamlJavaHome = new File(files(unpackOcamlJava).singleFile, downloadOcamlJava.basename) classpath new File(ocamlJavaHome, 'lib/ocamljava.jar') main 'ocaml.compilers.ocamljavaMain' inputs.dir ocamlJavaHome } task cleanGenerateHelloHash(type: Delete) { delete generateHelloHash delete fileTree('ocaml') { exclude '*.ml' } } clean.dependsOn cleanGenerateHelloHash //////////////////////////////////////////////////////////////////////// // // collect "com.ibm.wala.core.testdata_1.0.0.jar" // task collectTestData(type: Jar) { version '1.0.0' archiveName "${baseName}_${version}.${extension}" from compileTestJava from 'classes' includeEmptyDirs false destinationDir projectDir } task cleanCollectTestData(type: Delete) { delete collectTestData } clean.dependsOn cleanCollectTestData //////////////////////////////////////////////////////////////////////// // // collect "com.ibm.wala.core.testdata_1.0.0a.jar" // task collectTestDataA(type: Jar) { version '1.0.0a' archiveName "${baseName}_${version}.${extension}" from compileTestJava from 'classes' includeEmptyDirs false destinationDir projectDir exclude ( '**/CodeDeleted.class', '**/SortingExample.class', '**/A.class', ) } task cleanColllectTestDataA(type: Delete) { delete collectTestDataA } //////////////////////////////////////////////////////////////////////// // // help Eclipse build these extra jars when needed // afterEclipseBuildshipImport { dependsOn( collectJLex, collectTestData, collectTestDataA, downloadJavaCup, extractBcel, generateHelloHash, ) }