From 01cfe33865358399aea9ea2573b4d32ce54039ac Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sat, 9 May 2020 10:55:12 +0200 Subject: [PATCH] build.gradle.kts: moved module-info and java9 related configuration to precompiled script plugins --- buildSrc/build.gradle.kts | 24 +++++++ .../src/main/kotlin/flatlaf-java9.gradle.kts | 44 +++++++++++++ .../kotlin/flatlaf-module-info.gradle.kts | 64 +++++++++++++++++++ flatlaf-core/build.gradle.kts | 38 +---------- flatlaf-intellij-themes/build.gradle.kts | 33 +--------- 5 files changed, 137 insertions(+), 66 deletions(-) create mode 100644 buildSrc/build.gradle.kts create mode 100644 buildSrc/src/main/kotlin/flatlaf-java9.gradle.kts create mode 100644 buildSrc/src/main/kotlin/flatlaf-module-info.gradle.kts diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts new file mode 100644 index 00000000..98cc8fd5 --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -0,0 +1,24 @@ +/* + * Copyright 2020 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 + * + * https://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. + */ + +plugins { + `kotlin-dsl` +} + +// required for kotlin-dsl or embedded-kotlin plugins +repositories { + jcenter() +} diff --git a/buildSrc/src/main/kotlin/flatlaf-java9.gradle.kts b/buildSrc/src/main/kotlin/flatlaf-java9.gradle.kts new file mode 100644 index 00000000..7e5b2ceb --- /dev/null +++ b/buildSrc/src/main/kotlin/flatlaf-java9.gradle.kts @@ -0,0 +1,44 @@ +/* + * Copyright 2020 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 + * + * https://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. + */ + +plugins { + java +} + +if( JavaVersion.current() >= JavaVersion.VERSION_1_9 ) { + sourceSets { + create( "java9" ) { + java { + setSrcDirs( listOf( "src/main/java9" ) ) + } + } + } + + tasks { + named( "compileJava9Java" ) { + sourceCompatibility = "9" + targetCompatibility = "9" + } + + jar { + manifest.attributes( "Multi-Release" to "true" ) + + into( "META-INF/versions/9" ) { + from( sourceSets["java9"].output ) + } + } + } +} diff --git a/buildSrc/src/main/kotlin/flatlaf-module-info.gradle.kts b/buildSrc/src/main/kotlin/flatlaf-module-info.gradle.kts new file mode 100644 index 00000000..a78879c6 --- /dev/null +++ b/buildSrc/src/main/kotlin/flatlaf-module-info.gradle.kts @@ -0,0 +1,64 @@ +/* + * Copyright 2020 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 + * + * https://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. + */ + +open class ModuleInfoExtension { + var paths: ArrayList = ArrayList() + + fun dependsOn( vararg paths: String ) { + this.paths.addAll( paths ) + } +} + +val extension = project.extensions.create( "flatlafModuleInfo" ) + + +plugins { + java +} + +if( JavaVersion.current() >= JavaVersion.VERSION_1_9 ) { + sourceSets { + create( "module-info" ) { + java { + // include "src/main/java" here to get compile errors if classes are + // used from other modules that are not specified in module dependencies + setSrcDirs( listOf( "src/main/module-info", "src/main/java" ) ) + } + } + } + + tasks { + named( "compileModuleInfoJava" ) { + sourceCompatibility = "9" + targetCompatibility = "9" + + dependsOn( extension.paths ) + + options.compilerArgs.add( "--module-path" ) + options.compilerArgs.add( configurations.runtimeClasspath.get().asPath ) + } + + jar { + manifest.attributes( "Multi-Release" to "true" ) + + into( "META-INF/versions/9" ) { + from( sourceSets["module-info"].output ) { + include( "module-info.class" ) + } + } + } + } +} diff --git a/flatlaf-core/build.gradle.kts b/flatlaf-core/build.gradle.kts index e57ee369..180ad03a 100644 --- a/flatlaf-core/build.gradle.kts +++ b/flatlaf-core/build.gradle.kts @@ -16,56 +16,22 @@ plugins { `java-library` + `flatlaf-module-info` + `flatlaf-java9` `maven-publish` id( "com.jfrog.bintray" ) id( "com.jfrog.artifactory" ) } -if( JavaVersion.current() >= JavaVersion.VERSION_1_9 ) { - sourceSets { - create( "java9" ) { - java { - setSrcDirs( listOf( "src/main/java9" ) ) - } - } - create( "module-info" ) { - java { - // include "src/main/java" here to get compile errors if classes are - // used from other modules that are not specified in module dependencies - setSrcDirs( listOf( "src/main/module-info", "src/main/java" ) ) - } - } - } -} - java { withSourcesJar() withJavadocJar() } tasks { - if( JavaVersion.current() >= JavaVersion.VERSION_1_9 ) { - named( "compileModuleInfoJava" ) { - sourceCompatibility = "9" - targetCompatibility = "9" - } - } - jar { archiveBaseName.set( "flatlaf" ) - if( JavaVersion.current() >= JavaVersion.VERSION_1_9 ) { - manifest.attributes( "Multi-Release" to "true" ) - - into( "META-INF/versions/9" ) { - from( sourceSets["java9"].output ) - } - - from( sourceSets["module-info"].output ) { - include( "module-info.class" ) - } - } - doLast { ReorderJarEntries.reorderJarEntries( outputs.files.singleFile ); } diff --git a/flatlaf-intellij-themes/build.gradle.kts b/flatlaf-intellij-themes/build.gradle.kts index 54f0a364..18d6eeb0 100644 --- a/flatlaf-intellij-themes/build.gradle.kts +++ b/flatlaf-intellij-themes/build.gradle.kts @@ -16,6 +16,7 @@ plugins { `java-library` + `flatlaf-module-info` `maven-publish` id( "com.jfrog.bintray" ) id( "com.jfrog.artifactory" ) @@ -25,16 +26,8 @@ dependencies { implementation( project( ":flatlaf-core" ) ) } -if( JavaVersion.current() >= JavaVersion.VERSION_1_9 ) { - sourceSets { - create( "module-info" ) { - java { - // include "src/main/java" here to get compile errors if classes are - // used from other modules that are not specified in module dependencies - setSrcDirs( listOf( "src/main/module-info", "src/main/java" ) ) - } - } - } +flatlafModuleInfo { + dependsOn( ":flatlaf-core:jar" ) } java { @@ -43,26 +36,6 @@ java { } tasks { - if( JavaVersion.current() >= JavaVersion.VERSION_1_9 ) { - named( "compileModuleInfoJava" ) { - sourceCompatibility = "9" - targetCompatibility = "9" - - dependsOn( ":flatlaf-core:jar" ) - - options.compilerArgs.add( "--module-path" ) - options.compilerArgs.add( project( ":flatlaf-core" ).tasks["jar"].outputs.files.asPath ) - } - } - - jar { - if( JavaVersion.current() >= JavaVersion.VERSION_1_9 ) { - from( sourceSets["module-info"].output ) { - include( "module-info.class" ) - } - } - } - javadoc { options { this as StandardJavadocDocletOptions