From 5ff4686e86172181ee0b70843c9fd00a27c94796 Mon Sep 17 00:00:00 2001 From: nathan Date: Wed, 20 Jun 2018 17:13:10 +0200 Subject: [PATCH] Convert gradle from kotlin to groovy (at the moment, kotlin makes it more difficult) --- build.gradle | 523 +++++++++++++++++++++++++ build.gradle.kts | 427 -------------------- settings.gradle.kts => settings.gradle | 9 +- 3 files changed, 527 insertions(+), 432 deletions(-) create mode 100644 build.gradle delete mode 100644 build.gradle.kts rename settings.gradle.kts => settings.gradle (68%) diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..91391e3 --- /dev/null +++ b/build.gradle @@ -0,0 +1,523 @@ +import java.time.Instant + +plugins { + id 'java' + id 'maven-publish' + id 'signing' +// id 'de.undercouch.download' version '3.4.3' +} + +apply from: '../Utilities/gradle/swt.gradle' + + +group = 'com.dorkbox' +version = '3.13-SNAPSHOT' +description = 'Cross-platform SystemTray support for Swing/AWT, GtkStatusIcon, and AppIndicator on Java 6+' + +static String[] javaFile(String... fileNames) { + def fileList = [] as ArrayList + + for (name in fileNames) { + def fixed = name.replace('.', '/') + '.java' + fileList.add(fixed) + } + + return fileList +} + +// +//task downloadZipFile(type: Download) { +// src 'http://search.maven.org/remotecontent?filepath=com/github/jponge/lzma-java/1.3/lzma-java-1.3.jar' +// dest new File(buildDir, 'lzma-java-1.3.jar') +// overwrite false +//} +// +//task verifyFile(type: Verify, dependsOn: downloadZipFile) { +// src new File(buildDir, 'lzma-java-1.3.jar') +// algorithm 'SHA1' +// checksum 'a25db9d4d385ccda4825ae1b47a7a61d86e595af' +//} + + +configurations { + swtExampleJar +} + +sourceSets { + main { + java { + setSrcDirs Collections.singletonList('src') + + // only want to include java files for the source. 'setSrcDirs' resets includes... + include "**/*.java" + } + + resources { + setSrcDirs Collections.singletonList('src') + include 'dorkbox/systemTray/gnomeShell/extension.js', + 'dorkbox/systemTray/util/error_32.png' + } + } + + test { + java { + setSrcDirs Collections.singletonList('test') + + // only want to include java fi les for the source. 'setSrcDirs' resets includes... + include "**/*.java" + + // this is required because we reset the srcDirs to 'test' above, and 'main' must manually be added back + srcDir main.java + } + + resources { + setSrcDirs Collections.singletonList('test') + include 'dorkbox/*.png' + } + } + + swingExample { + java { + setSrcDirs Collections.singletonList('test') + include javaFile('dorkbox.TestTray', + 'dorkbox.CustomSwingUI') + srcDir main.java + } + + resources { + setSrcDirs Collections.singletonList('test') + include 'dorkbox/*.png' + } + } + + javaFxExample { + java { + setSrcDirs Collections.singletonList('test') + include javaFile('dorkbox.TestTray', + 'dorkbox.TestTrayJavaFX', + 'dorkbox.CustomSwingUI') + srcDir main.java + } + + resources { + setSrcDirs Collections.singletonList('test') + include 'dorkbox/*.png' + } + } + + swtExample { + java { + setSrcDirs Collections.singletonList('test') + include javaFile('dorkbox.TestTray', + 'dorkbox.TestTraySwt', + 'dorkbox.CustomSwingUI') + srcDir main.java + } + + resources { + setSrcDirs Collections.singletonList('test') + include 'dorkbox/*.png' + } + } +} + + +repositories { + mavenLocal() // this must be first! + + maven { + // because the eclipse release of SWT is abandoned on maven, this MAVEN repo has newer version of SWT, + url 'http://maven-eclipse.github.io/maven' + } + maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } + mavenCentral() +} + + +dependencies { + compile(project('Utilities')) { + // don't include any of the project dependencies for anything + transitive = false + } + + // our main dependencies are ALSO the same as the limited utilities (they are not automatically pulled in from other sourceSets) + // needed by the utilities (custom since we don't want to include everything). IntelliJ includes everything, but our builds do not + compile group: 'com.dorkbox', name: 'ShellExecutor', version: '1.1+' + compile group: 'org.javassist', name: 'javassist', version: '3.21.0-GA' + compile group: 'net.java.dev.jna', name: 'jna', version: '4.3.0' + compile group: 'net.java.dev.jna', name: 'jna-platform', version: '4.3.0' + compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25' + + + def log = runtime group: 'ch.qos.logback', name: 'logback-classic', version: '1.1.6' + + // because the eclipse release of SWT is abandoned on maven, this repo has a newer version of SWT, + // http://maven-eclipse.github.io/maven + // 4.4 is the oldest version that works with us. We use reflection to access SWT, so we can compile the project without needing SWT + def swtDep = testCompileOnly(group: 'org.eclipse.swt', name: "org.eclipse.swt.gtk.${swtPlatform}.${swtArch}", version: '4.4+') + + // JavaFX isn't always added to the compile classpath.... + testCompile files("${System.getProperty('java.home', '.')}/lib/ext/jfxrt.jar") + + // dependencies for our test examples + swingExampleCompile configurations.compile, log + javaFxExampleCompile configurations.compile, log + swtExampleCompile configurations.compile, log, swtDep +} + +project('Utilities') { + tasks.withType(Test) { + // want to remove utilities project from unit tests. It's unnecessary to run unit tests for the entire Utilities project + exclude('**/*') + } + + tasks.withType(JavaCompile) { + options.encoding = 'UTF-8' + options.incremental = true + options.fork = true + options.forkOptions.executable = 'javac' + + // setup compile options. we specifically want to suppress usage of "Unsafe" + options.compilerArgs = ['-XDignore.symbol.file', '-Xlint:deprecation'] + } +} + +/////////////////////////////// +////// Task defaults +/////////////////////////////// +tasks.withType(JavaCompile) { + options.encoding = 'UTF-8' + + options.bootstrapClasspath = files("/jre/lib/rt.jar") + sourceCompatibility = JavaVersion.VERSION_1_6 + targetCompatibility = JavaVersion.VERSION_1_6 +} + +tasks.withType(Jar) { + duplicatesStrategy DuplicatesStrategy.FAIL + + manifest { + attributes['Implementation-Version'] = version + attributes['Build-Date'] = Instant.now().toString() + } +} + +/////////////////////////////// +////// UTILITIES COMPILE (for inclusion into jars) +/////////////////////////////// +task compileUtils(type: JavaCompile) { + // we don't want the default include of **/*.java + getIncludes().clear() + + source = Collections.singletonList('../Utilities/src') + include javaFile('dorkbox.util.SwingUtil', + 'dorkbox.util.OS', + 'dorkbox.util.OSUtil', + 'dorkbox.util.OSType', + 'dorkbox.util.ImageResizeUtil', + 'dorkbox.util.ImageUtil', + 'dorkbox.util.CacheUtil', + 'dorkbox.util.IO', + 'dorkbox.util.JavaFX', + 'dorkbox.util.Property', + 'dorkbox.util.Keep', + 'dorkbox.util.FontUtil', + 'dorkbox.util.ScreenUtil', + 'dorkbox.util.ClassLoaderUtil', + 'dorkbox.util.Swt', + 'dorkbox.util.NamedThreadFactory', + 'dorkbox.util.ActionHandlerLong', + 'dorkbox.util.FileUtil', + 'dorkbox.util.MathUtil', + 'dorkbox.util.LocationResolver', + 'dorkbox.util.Desktop') + + // entire packages/directories + include('dorkbox/util/jna/**/*.java') + include('dorkbox/util/windows/**/*.java') + include('dorkbox/util/swing/**/*.java') + + classpath = sourceSets.main.compileClasspath + destinationDir = file("$rootDir/build/classes_utilities") +} + +/////////////////////////////// +////// Tasks to launch examples from gradle +/////////////////////////////// +task swingExample(type: JavaExec) { + classpath sourceSets.swingExample.runtimeClasspath + main = 'dorkbox.TestTray' + standardInput = System.in +} + +task javaFxExample(type: JavaExec) { + classpath sourceSets.javaFxExample.runtimeClasspath + main = 'dorkbox.TestTrayJavaFX' + standardInput = System.in +} + +task swtExample(type: JavaExec) { + classpath sourceSets.swtExample.runtimeClasspath + + main = 'dorkbox.TestTraySwt' + standardInput = System.in +} + +/////////////////////////////// +////// Jar Tasks +/////////////////////////////// +jar { + dependsOn compileUtils + + // include applicable class files from subset of Utilities project + from compileUtils.destinationDir +} + +task jarSwingExample(type: Jar) { + dependsOn jar + + baseName = 'SystemTray-SwingExample' + group = BasePlugin.BUILD_GROUP + description = 'Create an all-in-one example for testing, using Swing' + + from sourceSets.swingExample.output.classesDirs + from sourceSets.swingExample.output.resourcesDir + + // add all of the main project jars as a fat-jar for all examples, exclude the Utilities.jar contents + from configurations.compile.filter { it.name == 'Utilities.jar' ? null : it } + .collect { it.directory ? it : zipTree(it) } + + // include applicable class files from subset of Utilities project + from compileUtils.destinationDir + + manifest { + attributes['Main-Class'] = 'dorkbox.TestTray' + } +} + + +task jarJavaFxExample(type: Jar) { + dependsOn jar + + baseName = 'SystemTray-JavaFxExample' + group = BasePlugin.BUILD_GROUP + description = 'Create an all-in-one example for testing, using JavaFX' + + from sourceSets.javaFxExample.output.classesDirs + from sourceSets.javaFxExample.output.resourcesDir + + // add all of the main project jars as a fat-jar for all examples, exclude the Utilities.jar contents + from configurations.compile.filter { it.name == 'Utilities.jar' ? null : it } + .collect { it.directory ? it : zipTree(it) } + + // include applicable class files from subset of Utilities project + from compileUtils.destinationDir + + manifest { + attributes['Main-Class'] = 'dorkbox.TestTrayJavaFX' + attributes['Class-Path'] = "${System.getProperty('java.home', '.')}/lib/ext/jfxrt.jar" + } +} + +task jarSwtExample(type: Jar) { + dependsOn jar + + baseName = 'SystemTray-SwtExample' + group = BasePlugin.BUILD_GROUP + description = 'Create an all-in-one example for testing, using SWT' + + from sourceSets.swtExample.output.classesDirs + from sourceSets.swtExample.output.resourcesDir + + // add all of the main project jars as a fat-jar for all examples, exclude the Utilities.jar contents + from configurations.compile.filter { it.name == 'Utilities.jar' ? null : it } + .collect { it.directory ? it : zipTree(it) } + + // include applicable class files from subset of Utilities project + from compileUtils.destinationDir + + manifest { + attributes['Main-Class'] = 'dorkbox.TestTraySwt' + } +} + + +task jarAllExamples { + dependsOn jarSwingExample + dependsOn jarJavaFxExample + dependsOn jarSwtExample + + group = BasePlugin.BUILD_GROUP + description = 'Create all-in-one examples for testing, using Swing, JavaFX, and SWT' +} + +/////////////////////////////// +////// Publishing +/////////////////////////////// +task sourceJar(type: Jar) { + description = "Creates a JAR that contains the source code." + + from sourceSets.main.allSource + from compileUtils.source + + classifier = "sources" +} + +task javaDocJar(type: Jar) { + description = "Creates a JAR that contains the javadocs." + + classifier = "javadoc" +} + + + + +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + + pom { + // remove the Utilities project from the pom (since we include the relevant source, a custom jar is not necessary) + // This is run AFTER the pom data is put together, and just before written to disk + withXml { + // get the backing list of all the dependencies in the POM + def depsNode = asNode().getByName('dependencies').get(0).children() + for (int i = 0; i < depsNode.size(); i++) { + // find and remove the 'Utilities' project from the POM + if (depsNode.get(i).getByName('artifactId').get(0).children().get(0) == 'Utilities') { + depsNode.remove(i) + break + } + } + } + + url = 'https://git.dorkbox.com/dorkbox/SystemTray' + description = this.description + +// properties { +//// sourceEncoding = 'UTF-8' +//// ['maven.compiler.source'] = '6' +//// maven.compiler.target = 6 +// } +// +// properties['maven.compiler.source'] = '6' + + issueManagement { + url = 'https://git.dorkbox.com/dorkbox/SystemTray' + system = 'Gitea Issues' + } + +// licenses { +// license { +// name = 'The Apache License, Version 2.0' +// url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' +// } +// } +// developers { +// developer { +// id = 'johnd' +// name = 'John Doe' +// email = 'john.doe@example.com' +// } +// } +// scm { +// connection = 'scm:git:git://example.com/my-library.git' +// developerConnection = 'scm:git:ssh://example.com/my-library.git' +// url = 'http://example.com/my-library/' +// } + + + } + + /* + + + + +Dorkbox +sonatype@dorkbox.com +Dorkbox +https://github.com/dorkbox + + + + */ + + + artifactId = 'SystemTray' + + artifact(javaDocJar) + artifact(sourceJar) + } + } +} + + +signing { + sign publishing.publications.mavenJava +} + +//gradle.taskGraph.whenReady { taskGraph -> +// if (taskGraph.allTasks.any { it instanceof Sign }) { +// // Use Java 6's console to read from the console (no good for a CI environment) +// Console console = System.console() +// console.printf "\n\nWe have to sign some things in this build." + +// "\n\nPlease enter your signing details.\n\n" +// +// def id = console.readLine("PGP Key Id: ") +// def file = console.readLine("PGP Secret Key Ring File (absolute path): ") +// def password = console.readPassword("PGP Private Key Password: ") +// +// ext.signing.keyId = 24875D73 +// signing.password = secret +// signing.secretKeyRingFile = '/Users/ me / . gnupg / secring.gpg' +// +// allprojects { ext."signing.keyId" = id } +// allprojects { ext."signing.secretKeyRingFile" = file } +// allprojects { ext."signing.password" = password } +// +// console.printf "\nThanks.\n\n" +// } +//} +// +//signing { +// sign publishing.publications +//} + + +def props = new Properties() +file('../../sonatype.properties').withInputStream { props.load(it) } + +task printProps { + doFirst { + println props.getProperty('developerName') + } +} + +// +//tasks { +// // Disable publication on root project +// "artifactoryPublish"(ArtifactoryTask::class) { +// skip = true +// } +//} + +//artifactory { +// setContextUrl("https://repo.gradle.org/gradle") +// publish(delegateClosureOf { +// repository(delegateClosureOf { +// val targetRepoKey = "libs-${buildTagFor(project.version as String)}s-local" +// setProperty("repoKey", targetRepoKey) +// setProperty("username", project.findProperty("artifactory_user") ?: "nouser") +// setProperty("password", project.findProperty("artifactory_password") ?: "nopass") +// setProperty("maven", true) +// }) +// defaults(delegateClosureOf { +// invokeMethod("publications", "mavenJava") +// }) +// }) +// resolve(delegateClosureOf { +// setProperty("repoKey", "repo") +// }) +//} diff --git a/build.gradle.kts b/build.gradle.kts deleted file mode 100644 index 175b2b2..0000000 --- a/build.gradle.kts +++ /dev/null @@ -1,427 +0,0 @@ -import org.gradle.api.internal.HasConvention -import org.gradle.internal.impldep.org.apache.http.client.methods.RequestBuilder.options -import org.jetbrains.kotlin.contracts.model.structure.UNKNOWN_COMPUTATION.type -import org.jetbrains.kotlin.gradle.dsl.Coroutines -import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet -import org.jetbrains.kotlin.gradle.plugin.android.AndroidGradleWrapper.getTestVariants -import org.jetbrains.kotlin.gradle.plugin.android.AndroidGradleWrapper.srcDir -import java.util.Collections -import java.time.Instant - -plugins { - java - maven - kotlin("jvm").version("1.2.41") -} - -apply { - plugin("java") - plugin("kotlin") -} - -kotlin.experimental.coroutines = Coroutines.ENABLE - -group = "com.dorkbox" -version = "3.13-SNAPSHOT" -description = "Cross-platform SystemTray support for Swing/AWT, GtkStatusIcon, and AppIndicator on Java 6+" - - -java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} - -//configure { -// setSourceCompatibility(1.7) -// setTargetCompatibility(1.7) -//// if (project.hasProperty("env")) { -//// var env = project.property("env"); -//// sourceSets.getByName("main") -//// .resources.srcDirs("src/main/profile/" + env) -//// } -//} - - -// This creates the configurations usable inside dependencies and allowing us custom libs when building the example jars -val swingExampleCompile = configurations.create("swingExampleCompile") -val javaFxExampleCompile = configurations.create("javaFxExampleCompile") -val swtExampleCompile = configurations.create("swtExampleCompile") - -// make working with sourceSets easier -val sourceSets = java.sourceSets -fun sourceSets(block: SourceSetContainer.() -> Unit) = sourceSets.apply(block) - -val SourceSetContainer.main: SourceSet get() = maybeCreate("main") -fun SourceSetContainer.main(block: SourceSet.() -> Unit) = main.apply(block) - -val SourceSetContainer.test: SourceSet get() = maybeCreate("test") -fun SourceSetContainer.test(block: SourceSet.() -> Unit) = test.apply(block) - -// test/example jars -val SourceSetContainer.swingExample: SourceSet get() = maybeCreate("swingExample") -fun SourceSetContainer.swingExample(block: SourceSet.() -> Unit) = swingExample.apply(block) -val org.gradle.api.tasks.SourceSetContainer.javaFxExample: SourceSet get() = maybeCreate("javaFxExample") -fun SourceSetContainer.javaFxExample(block: SourceSet.() -> Unit) = javaFxExample.apply(block) -val org.gradle.api.tasks.SourceSetContainer.swtExample: SourceSet get() = maybeCreate("swtExample") -fun SourceSetContainer.swtExample(block: SourceSet.() -> Unit) = swtExample.apply(block) - -var SourceDirectorySet.sourceDirs: Iterable - get() = srcDirs - set(value) { - setSrcDirs(value) - } - - -fun javaFile(vararg fileNames: String): Iterable { - val fileList = ArrayList() - - for (name in fileNames) { - val fixed = name.replace('.', '/') + ".java" - fileList.add(fixed) - } - - return fileList -} - -sourceSets { - main { - java { - sourceDirs = files("src") - - // only want to include java files for the source. 'setSrcDirs' resets includes... - include("**/*.java") - - resources { - sourceDirs = files("src") - include("dorkbox/systemTray/gnomeShell/extension.js", - "dorkbox/systemTray/util/error_32.png") - } - } - } - - test { - java { - sourceDirs = files("test") - - // only want to include java files for the source. 'setSrcDirs' resets includes... - include("**/*.java") - - // this is required because we reset the srcDirs to 'test' above, and 'main' must manually be added back - srcDir(sourceSets.main.allJava) - } - } - - swingExample { - java { - sourceDirs = files("test") - include(javaFile("dorkbox.TestTray", "dorkbox.CustomSwingUI")) - - srcDir(sourceSets.main.allJava) - } - - resources { - sourceDirs = files("test") - include("dorkbox/*.png") - } - } - - javaFxExample { - java { - sourceDirs = files("test") - include(javaFile("dorkbox.TestTray", "dorkbox.TestTrayJavaFX", "dorkbox.CustomSwingUI")) - - srcDir(sourceSets.main.allJava) - } - - resources { - sourceDirs = files("test") - include("dorkbox/*.png") - } - } - - swtExample { - java { - sourceDirs = files("test") - include(javaFile("dorkbox.TestTray", "dorkbox.TestTraySwt", "dorkbox.CustomSwingUI")) - - srcDir(sourceSets.main.allJava) - } - - resources { - sourceDirs = files("test") - include("dorkbox/*.png") - } - } -} - -repositories { - mavenLocal() // this must be first! - - mavenCentral() - - // because the eclipse release of SWT is abandoned on maven, this MAVEN repo has newer version of SWT, - maven(url = "http://maven-eclipse.github.io/maven") - maven(url = "https://oss.sonatype.org/content/repositories/snapshots/") - mavenCentral() -} - - -dependencies { - compile(project("Utilities")) { - // don't include any of the project dependencies for anything - isTransitive = false - } - - // our main dependencies are ALSO the same as the limited utilities (they are not automatically pulled in from other sourceSets) - // needed by the utilities (custom since we don't want to include everything). IntelliJ includes everything, but our builds do not - compile(group = "com.dorkbox", name = "ShellExecutor", version = "1.1+") - compile(group = "org.javassist", name = "javassist", version = "3.21.0-GA") - compile(group = "net.java.dev.jna", name = "jna", version = "4.3.0") - compile(group = "net.java.dev.jna", name = "jna-platform", version = "4.3.0") - compile(group = "org.slf4j", name = "slf4j-api", version = "1.7.25") - - - val log = runtime(group = "ch.qos.logback", name = "logback-classic", version = "1.1.6") - - // because the eclipse release of SWT is abandoned on maven, this repo has a newer version of SWT, - // http://maven-eclipse.github.io/maven - // 4.4 is the oldest version that works with us. We use reflection to access SWT, so we can compile the project without needing SWT - val swtDep = testCompileOnly(group = "org.eclipse.swt", name = getSwtMavenName(), version = "4.4+") - - // JavaFX isn't always added to the compile classpath.... - testCompile(files(System.getProperty("java.home", ".") + "/lib/ext/jfxrt.jar")) - - // dependencies for our test examples - swingExampleCompile(configurations.compile) - javaFxExampleCompile(configurations.compile) - swtExampleCompile(configurations.compile) - swtExampleCompile(swtDep) - - swingExampleCompile(log) - javaFxExampleCompile(log) - swtExampleCompile(log) -} - - - -project("Utilities") { - tasks.withType { - // want to remove utilities project from unit tests. It's unnecessary to run unit tests for the entire Utilities project - exclude("**/*") - } - - tasks.withType { - options.encoding = "UTF-8" - options.isIncremental = true - options.isFork = true - options.forkOptions.executable = "javac" - - // setup compile options. we specifically want to suppress usage of "Unsafe" - options.compilerArgs = listOf("-XDignore.symbol.file", "-Xlint:deprecation") - } -} - - - -/////////////////////////////// -////// Task defaults -/////////////////////////////// -tasks.withType { - options.encoding = "UTF-8" - -// options.bootstrapClasspath = files("/jre/lib/rt.jar") - sourceCompatibility = JavaVersion.VERSION_1_6.toString() - targetCompatibility = JavaVersion.VERSION_1_6.toString() -} - -tasks.withType { - setDuplicatesStrategy(DuplicatesStrategy.FAIL) - - manifest { - attributes["Implementation-Version"] = version - attributes["Built-Date"] = Instant.now().toString() - } -} - - -/////////////////////////////// -////// UTILITIES COMPILE (for inclusion into jars) -/////////////////////////////// -task("compileUtils") { - // we don't want the default include of **/*.java - includes.clear() - - source = fileTree("../Utilities/src") - include(javaFile ( - "dorkbox.util.SwingUtil", - "dorkbox.util.OS", - "dorkbox.util.OSUtil", - "dorkbox.util.OSType", - "dorkbox.util.ImageResizeUtil", - "dorkbox.util.ImageUtil", - "dorkbox.util.CacheUtil", - "dorkbox.util.IO", - "dorkbox.util.JavaFX", - "dorkbox.util.Property", - "dorkbox.util.Keep", - "dorkbox.util.FontUtil", - "dorkbox.util.ScreenUtil", - "dorkbox.util.ClassLoaderUtil", - "dorkbox.util.Swt", - "dorkbox.util.NamedThreadFactory", - "dorkbox.util.ActionHandlerLong", - "dorkbox.util.FileUtil", - "dorkbox.util.MathUtil", - "dorkbox.util.LocationResolver", - "dorkbox.util.Desktop")) - - // entire packages/directories - include("dorkbox/util/jna/**/*.java") - include("dorkbox/util/windows/**/*.java") - include("dorkbox/util/swing/**/*.java") - - classpath = sourceSets.main.compileClasspath - destinationDir = file("$rootDir/build/classes_utilities") -} - - -/////////////////////////////// -////// Tasks to launch examples from gradle -/////////////////////////////// -task("swingExample") { - classpath = sourceSets.swingExample.runtimeClasspath - main = "dorkbox.TestTray" - standardInput = System.`in` -} - -task("javaFxExample") { - classpath = sourceSets.javaFxExample.runtimeClasspath - main = "dorkbox.TestTrayJavaFX" - standardInput = System.`in` -} - -task("swtExample") { - classpath = sourceSets.swtExample.runtimeClasspath - main = "dorkbox.TestTraySwt" - standardInput = System.`in` -} - - - -/////////////////////////////// -////// Jar Tasks -/////////////////////////////// -val jar: Jar by tasks -jar.apply { - dependsOn("compileUtils") - - // include applicable class files from subset of Utilities project - from((tasks["compileUtils"] as JavaCompile).destinationDir) -} - -task("jarSwingExample") { - dependsOn("jar") - - baseName = "SystemTray-SwingExample" - group = BasePlugin.BUILD_GROUP - description = "Create an all-in-one example for testing, using Swing" - - from(sourceSets.swingExample.output.classesDirs) - from(sourceSets.swingExample.output.resourcesDir) - - // add all of the main project jars as a fat-jar for all examples, exclude the Utilities.jar contents - from(configurations.compile.filter { it.nameWithoutExtension != "Utilities"} - .map { if (it.isDirectory) it else zipTree(it) }) - - // include applicable class files from subset of Utilities project - from((tasks["compileUtils"] as JavaCompile).destinationDir) - - manifest { - attributes["Main-Class"] = "dorkbox.TestTray" - } -} - - -task("jarJavaFxExample") { - dependsOn("jar") - - baseName = "SystemTray-JavaFxExample" - group = BasePlugin.BUILD_GROUP - description = "Create an all-in-one example for testing, using JavaFX" - - from(sourceSets.javaFxExample.output.classesDirs) - from(sourceSets.javaFxExample.output.resourcesDir) - - // add all of the main project jars as a fat-jar for all examples, exclude the Utilities.jar contents - from(configurations.compile.filter { it.nameWithoutExtension != "Utilities" } - .map { if (it.isDirectory) it else zipTree(it) }) - - // include applicable class files from subset of Utilities project - from((tasks["compileUtils"] as JavaCompile).destinationDir) - - - manifest { - attributes["Main-Class"] = "dorkbox.TestTrayJavaFX" - attributes["Class-Path"] = System.getProperty("java.home", ".") + "/lib/ext/jfxrt.jar" - } -} - -task("jarSwtExample") { - dependsOn("jar") - - baseName = "SystemTray-SwtExample" - group = BasePlugin.BUILD_GROUP - description = "Create an all-in-one example for testing, using SWT" - - from(sourceSets.swtExample.output.classesDirs) - from(sourceSets.swtExample.output.resourcesDir) - - // add all of the main project jars as a fat-jar for all examples, exclude the Utilities.jar contents - from(configurations.compile.filter { it.nameWithoutExtension != "Utilities" } - .map { if (it.isDirectory) it else zipTree(it) }) - - // include applicable class files from subset of Utilities project - from((tasks["compileUtils"] as JavaCompile).destinationDir) - - manifest { - attributes["Main-Class"] = "dorkbox.TestTraySwt" - } -} - - -task("jarAllExamples") { - dependsOn("jarSwingExample") - dependsOn("jarJavaFxExample") - dependsOn("jarSwtExample") - - group = BasePlugin.BUILD_GROUP - description = "Create all-in-one examples for testing, using Swing, JavaFX, and SWT" -} - - - -operator fun Regex.contains(text: CharSequence): Boolean = this.matches(text) -fun getSwtMavenName(): String { - var platform = System.getProperty("os.name") - when (platform.replace("\\s".toRegex(), "").toLowerCase()) { - in Regex(".*linux.*") -> platform = "linux" - in Regex(".*darwin.*") -> platform = "macosx" - in Regex(".*osx.*") -> platform = "macosx" - in Regex(".*win.*") -> platform = "win32" - } - - var arch = System.getProperty("os.arch") - if (arch.matches(".*64.*".toRegex())) { - arch = "x86_64" - } - else { - arch = "x86" - } - - - // because the eclipse release of SWT is abandoned on maven, this MAVEN repo has newer version of SWT, - // https://github.com/maven-eclipse/maven-eclipse.github.io for the website about it - // http://maven-eclipse.github.io/maven for the maven repo - - return "org.eclipse.swt.gtk.${platform}.${arch}" -} diff --git a/settings.gradle.kts b/settings.gradle similarity index 68% rename from settings.gradle.kts rename to settings.gradle index 5185149..a2630a7 100644 --- a/settings.gradle.kts +++ b/settings.gradle @@ -1,5 +1,3 @@ -import java.util.* - include("Utilities") rootProject.name = "SystemTray" @@ -9,9 +7,10 @@ for (project in rootProject.children) { if (project.name == "Utilities") { // utilities are a DIFFERENT than all the other projects, in that they are never built directly, but are embedded into the project project.projectDir = file("../Utilities") - project.buildFileName = "build.gradle.kts" + project.buildFileName = "build.gradle" } - assert (project.projectDir.isDirectory) - assert (project.buildFile.isFile) + + assert (project.projectDir.directory) + assert (project.buildFile.file) }