apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'maven' apply plugin: 'osgi' group = 'com.fazecast' archivesBaseName = 'jSerialComm' version = '2.5.3' ext.moduleName = 'com.fazecast.jSerialComm' assert hasProperty('java6Home'): "Set the property 'java6Home' in your gradle.properties file pointing to a Java 6 JDK installation" assert hasProperty('java9Home'): "Set the property 'java9Home' in your gradle.properties file pointing to a Java 9 JDK installation" sourceCompatibility = 1.6 targetCompatibility = 1.6 javadoc.options.links("https://docs.oracle.com/javase/9/docs/api/") javadoc.options.addBooleanOption('html4', true) def java6ExecutablesPath = new File(java6Home, 'bin') def java9ExecutablesPath = new File(java9Home, 'bin') def java6Executables = [:].withDefault { execName -> def executable = new File(java6ExecutablesPath, execName) executable } def java9Executables = [:].withDefault { execName -> def executable = new File(java9ExecutablesPath, execName) executable } tasks.withType(JavaCompile) { options.with { fork = true forkOptions.javaHome = file(java6Home) } } tasks.withType(Javadoc) { executable = java9Executables.javadoc } tasks.withType(Test) { executable = java6Executables.java } tasks.withType(JavaExec) { executable = java6Executables.java } sourceSets { main { java { srcDirs = ['src/main/java'] } } moduleInfo { java { srcDirs = ['src/moduleInfo/java'] } } } compileModuleInfoJava { sourceCompatibility = 9 targetCompatibility = 9 inputs.property("moduleName", moduleName) doFirst { classpath = files() options.fork = true options.forkOptions.javaHome = file(java9Home) options.sourcepath = files(sourceSets.moduleInfo.java.srcDirs) options.compilerArgs = [ '--module-path', classpath.asPath, '-d', sourceSets.main.output.classesDirs.asPath ] } } jar { from sourceSets.main.output from sourceSets.moduleInfo.output manifest { instruction 'Bundle-Description', 'Java Serial Communications Library' instruction 'Bundle-Vendor', 'Fazecast, Inc.' instruction 'Require-Capability', 'osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.6))"' attributes 'Implementation-Title': 'jSerialComm: Java Serial Communications Library', 'Implementation-Version': version, 'Implementation-Vendor': 'Fazecast, Inc.', 'Sealed': 'true' } } task testJar(type: Jar) { classifier = 'test' from sourceSets.test.output, sourceSets.main.output manifest { attributes 'Main-Class': 'com.fazecast.jSerialComm.SerialPortTest', 'Implementation-Title': 'jSerialComm: Java Serial Communications Library', 'Implementation-Version': version, 'Implementation-Vendor': 'Fazecast, Inc.', 'Sealed': 'true' } } task javadocJar(type: Jar) { classifier = 'javadoc' from javadoc } task sourcesJar(type: Jar) { classifier = 'sources' from sourceSets.main.allSource } artifacts { archives jar, javadocJar, sourcesJar, testJar }