Skip to content

Commit 5af5e83

Browse files
committed
build: extract language config into convention plugin
source and targetCompatibility can be omitted, because the toolchain takes priority
1 parent 6781232 commit 5af5e83

File tree

4 files changed

+76
-69
lines changed

4 files changed

+76
-69
lines changed

build-logic/src/main/kotlin/modelix-kotlin-jvm.gradle.kts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,7 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
1818

1919
plugins {
2020
kotlin("jvm")
21-
}
22-
23-
java {
24-
toolchain {
25-
languageVersion.set(JavaLanguageVersion.of(11))
26-
}
21+
id("modelix-language-config")
2722
}
2823

2924
kotlin {

build-logic/src/main/kotlin/modelix-kotlin-multiplatform.gradle.kts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,7 @@
1616

1717
plugins {
1818
kotlin("multiplatform")
19-
}
20-
21-
java {
22-
toolchain {
23-
languageVersion.set(JavaLanguageVersion.of(11))
24-
}
19+
id("modelix-language-config")
2520
}
2621

2722
kotlin {
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/*
2+
* Copyright (c) 2024.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
import gradle.kotlin.dsl.accessors._9d6accdeac6876c73060866945fb6d8c.java
18+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
19+
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
20+
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
21+
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
22+
import org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformPluginWrapper
23+
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformJvmPlugin
24+
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
25+
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
26+
27+
java {
28+
toolchain {
29+
languageVersion.set(JavaLanguageVersion.of(11))
30+
}
31+
}
32+
33+
val kotlinApiVersion = KotlinVersion.KOTLIN_1_6
34+
tasks.withType<KotlinCompile>().configureEach {
35+
if (!name.lowercase().contains("test")) {
36+
this.compilerOptions {
37+
jvmTarget.set(JvmTarget.JVM_11)
38+
freeCompilerArgs.addAll(listOf("-Xjvm-default=all-compatibility", "-Xexpect-actual-classes"))
39+
apiVersion.set(kotlinApiVersion)
40+
}
41+
}
42+
}
43+
44+
tasks.withType<KotlinJvmCompile>().configureEach {
45+
if (!name.lowercase().contains("test")) {
46+
this.compilerOptions {
47+
jvmTarget.set(JvmTarget.JVM_11)
48+
freeCompilerArgs.addAll(listOf("-Xjvm-default=all-compatibility"))
49+
apiVersion.set(kotlinApiVersion)
50+
}
51+
}
52+
}
53+
54+
plugins.withType<KotlinPlatformJvmPlugin> {
55+
extensions.configure<KotlinJvmProjectExtension> {
56+
jvmToolchain(11)
57+
compilerOptions {
58+
jvmTarget.set(JvmTarget.JVM_11)
59+
}
60+
}
61+
}
62+
63+
plugins.withType<KotlinMultiplatformPluginWrapper> {
64+
extensions.configure<KotlinMultiplatformExtension> {
65+
jvmToolchain(11)
66+
sourceSets.all {
67+
if (!name.lowercase().contains("test")) {
68+
languageSettings {
69+
apiVersion = kotlinApiVersion.version
70+
}
71+
}
72+
}
73+
}
74+
}

build.gradle.kts

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,6 @@ import io.gitlab.arturbosch.detekt.Detekt
55
import org.jetbrains.dokka.base.DokkaBase
66
import org.jetbrains.dokka.base.DokkaBaseConfiguration
77
import org.jetbrains.dokka.gradle.DokkaTaskPartial
8-
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
9-
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
10-
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
11-
import org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformPluginWrapper
12-
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformJvmPlugin
138

149
buildscript {
1510
dependencies {
@@ -75,58 +70,6 @@ subprojects {
7570
}
7671
}
7772

78-
val kotlinApiVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_6
79-
subproject.tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach {
80-
if (!name.lowercase().contains("test")) {
81-
this.compilerOptions {
82-
jvmTarget.set(JvmTarget.JVM_11)
83-
freeCompilerArgs.addAll(listOf("-Xjvm-default=all-compatibility", "-Xexpect-actual-classes"))
84-
apiVersion.set(kotlinApiVersion)
85-
}
86-
}
87-
}
88-
subproject.tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile>().configureEach {
89-
if (!name.lowercase().contains("test")) {
90-
this.compilerOptions {
91-
jvmTarget.set(JvmTarget.JVM_11)
92-
freeCompilerArgs.addAll(listOf("-Xjvm-default=all-compatibility"))
93-
apiVersion.set(kotlinApiVersion)
94-
}
95-
}
96-
}
97-
98-
subproject.plugins.withType<JavaPlugin> {
99-
subproject.extensions.configure<JavaPluginExtension> {
100-
toolchain {
101-
languageVersion.set(JavaLanguageVersion.of(11))
102-
}
103-
sourceCompatibility = JavaVersion.VERSION_11
104-
targetCompatibility = JavaVersion.VERSION_11
105-
}
106-
}
107-
108-
subproject.plugins.withType<KotlinPlatformJvmPlugin> {
109-
subproject.extensions.configure<KotlinJvmProjectExtension> {
110-
jvmToolchain(11)
111-
compilerOptions {
112-
jvmTarget.set(JvmTarget.JVM_11)
113-
}
114-
}
115-
}
116-
117-
subproject.plugins.withType<KotlinMultiplatformPluginWrapper> {
118-
subproject.extensions.configure<KotlinMultiplatformExtension> {
119-
jvmToolchain(11)
120-
sourceSets.all {
121-
if (!name.lowercase().contains("test")) {
122-
languageSettings {
123-
apiVersion = kotlinApiVersion.version
124-
}
125-
}
126-
}
127-
}
128-
}
129-
13073
subproject.plugins.withType<NodePlugin> {
13174
subproject.extensions.configure<NodeExtension> {
13275
version.set(libs.versions.node)

0 commit comments

Comments
 (0)