diff --git a/.travis.yml b/.travis.yml index 42f29718..84d6d651 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,5 +24,5 @@ deploy: skip_cleanup: true # to upload artifacts created during the build on: branch: master - jdk: openjdk8 + jdk: openjdk11 tags: true diff --git a/CHANGELOG.md b/CHANGELOG.md index 08842d16..b82e7d0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ FlatLaf Change Log ================== +## Unreleased + +- Added Java 9 module descriptor `module-info.class` to `flatlaf.jar` (in + `META-INF/versions/9`). But FlatLaf remains Java 8 compatible. (issue #1) + + ## 0.9 - Initial release diff --git a/flatlaf-core/build.gradle.kts b/flatlaf-core/build.gradle.kts index a74bad71..04ded61a 100644 --- a/flatlaf-core/build.gradle.kts +++ b/flatlaf-core/build.gradle.kts @@ -26,7 +26,20 @@ repositories { jcenter() } +if( JavaVersion.current() >= JavaVersion.VERSION_1_9 ) { + sourceSets { + create( "main9" ) { + java { + setSrcDirs( listOf( "src/main9/java" ) ) + } + } + } +} + dependencies { + if( JavaVersion.current() >= JavaVersion.VERSION_1_9 ) + "main9Implementation"( files( sourceSets["main"].output.classesDirs ).builtBy( "compileJava" ) ) + testImplementation( "com.miglayout:miglayout-swing:5.2" ) testImplementation( "com.jgoodies:jgoodies-forms:1.9.0" ) } @@ -37,8 +50,30 @@ java { } tasks { + if( JavaVersion.current() >= JavaVersion.VERSION_1_9 ) { + named( "compileMain9Java" ) { + doFirst { + options.compilerArgs = listOf( + "--release", "9", + "--patch-module", "com.formdev.flatlaf=" + classpath.asPath + ) + classpath = files() + } + } + } + jar { archiveBaseName.set( "flatlaf" ) + + if( JavaVersion.current() >= JavaVersion.VERSION_1_9 ) { + manifest.attributes( + "Multi-Release" to "true" + ) + + into( "META-INF/versions/9" ) { + from( sourceSets["main9"].output ) + } + } } javadoc { diff --git a/flatlaf-core/src/main9/java/module-info.java b/flatlaf-core/src/main9/java/module-info.java new file mode 100644 index 00000000..62016c17 --- /dev/null +++ b/flatlaf-core/src/main9/java/module-info.java @@ -0,0 +1,27 @@ +/* + * Copyright 2019 FormDev Software GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @author Karl Tauber + */ +module com.formdev.flatlaf { + requires java.desktop; + + exports com.formdev.flatlaf; + exports com.formdev.flatlaf.icons; + exports com.formdev.flatlaf.ui; + exports com.formdev.flatlaf.util; +} diff --git a/flatlaf-demo/build.gradle.kts b/flatlaf-demo/build.gradle.kts index 718168a1..d90bdae6 100644 --- a/flatlaf-demo/build.gradle.kts +++ b/flatlaf-demo/build.gradle.kts @@ -42,6 +42,8 @@ tasks { attributes( "Main-Class" to "com.formdev.flatlaf.demo.FlatLafDemo" ) } + exclude( "META-INF/versions/**" ) + // include all dependencies in jar from( { configurations.runtimeClasspath.get().filter { it.name.endsWith( "jar" ) }.map { zipTree( it ) }