@@ -2,22 +2,14 @@ package io.github.reactivecircus.cache4k.buildlogic.convention
22
33import com.vanniktech.maven.publish.MavenPublishBaseExtension
44import com.vanniktech.maven.publish.MavenPublishPlugin
5- import io.gitlab.arturbosch. detekt.Detekt
6- import io.gitlab.arturbosch.detekt.DetektPlugin
7- import io.gitlab.arturbosch. detekt.extensions.DetektExtension
5+ import dev. detekt.gradle .Detekt
6+ import dev.detekt.gradle.extensions.DetektExtension
7+ import dev. detekt.gradle.plugin.DetektPlugin
88import kotlinx.validation.BinaryCompatibilityValidatorPlugin
99import org.gradle.accessors.dm.LibrariesForLibs
1010import org.gradle.api.Plugin
1111import org.gradle.api.Project
1212import org.gradle.api.tasks.testing.Test
13- import org.gradle.kotlin.dsl.configure
14- import org.gradle.kotlin.dsl.creating
15- import org.gradle.kotlin.dsl.getValue
16- import org.gradle.kotlin.dsl.getting
17- import org.gradle.kotlin.dsl.invoke
18- import org.gradle.kotlin.dsl.register
19- import org.gradle.kotlin.dsl.the
20- import org.gradle.kotlin.dsl.withType
2113import org.jetbrains.dokka.gradle.DokkaExtension
2214import org.jetbrains.dokka.gradle.DokkaPlugin
2315import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
@@ -42,9 +34,9 @@ internal class ConventionPlugin : Plugin<Project> {
4234
4335private fun Project.configureRootProject () {
4436 plugins.withId(" org.jetbrains.dokka" ) {
45- extensions.configure< DokkaExtension > {
46- dokkaPublications.configureEach {
47- outputDirectory.set(layout.buildDirectory.dir(" docs/api" ))
37+ extensions.configure( DokkaExtension :: class .java) {
38+ it. dokkaPublications.configureEach {
39+ it. outputDirectory.set(layout.buildDirectory.dir(" docs/api" ))
4840 }
4941 }
5042 }
@@ -60,11 +52,11 @@ private fun Project.configureSubproject() {
6052 version = property(" VERSION_NAME" ) as String
6153
6254 plugins.withId(" org.jetbrains.kotlin.multiplatform" ) {
63- extensions.configure< KotlinMultiplatformExtension > {
64- explicitApi()
65- configureTargets(this @configureSubproject)
66- sourceSets.configureEach {
67- languageSettings.apply {
55+ extensions.configure( KotlinMultiplatformExtension :: class .java) {
56+ it. explicitApi()
57+ it. configureTargets(this @configureSubproject)
58+ it. sourceSets.configureEach {
59+ it. languageSettings.apply {
6860 progressiveMode = true
6961 }
7062 }
@@ -73,82 +65,81 @@ private fun Project.configureSubproject() {
7365
7466 // configure detekt
7567 pluginManager.apply (DetektPlugin ::class .java)
76- dependencies.add(" detektPlugins" , the<LibrariesForLibs >().plugin.detektFormatting)
77- plugins.withType<DetektPlugin > {
78- extensions.configure<DetektExtension > {
79- source.from(files(" src/" ))
80- config.from(files(" ${project.rootDir} /detekt.yml" ))
81- buildUponDefaultConfig = true
82- allRules = true
83- parallel = true
68+ dependencies.add(" detektPlugins" , (extensions.getByName(" libs" ) as LibrariesForLibs ).plugin.detektKtlintWrapper)
69+ plugins.withType(DetektPlugin ::class .java) {
70+ extensions.configure(DetektExtension ::class .java) {
71+ it.source.from(files(" src/" ))
72+ it.config.from(files(" ${project.rootDir} /detekt.yml" ))
73+ it.buildUponDefaultConfig.set(true )
74+ it.parallel.set(true )
8475 }
85- tasks.withType<Detekt >().configureEach {
86- jvmTarget = JvmTarget .JVM_11 .target
87- reports {
88- xml.required.set(false )
89- txt.required.set(false )
90- sarif.required.set(false )
91- md.required.set(false )
76+ tasks.withType(Detekt ::class .java).configureEach {
77+ it.jvmTarget.set(JvmTarget .JVM_11 .target)
78+ it.reports { report ->
79+ report.xml.required.set(false )
80+ report.sarif.required.set(false )
81+ report.md.required.set(false )
9282 }
9383 }
9484 }
9585
9686 // configure test
97- tasks.withType< Test >( ).configureEach {
98- useJUnitPlatform()
99- testLogging {
100- events(" passed" , " skipped" , " failed" )
87+ tasks.withType( Test :: class .java ).configureEach { test ->
88+ test. useJUnitPlatform()
89+ test. testLogging {
90+ it. events(" passed" , " skipped" , " failed" )
10191 }
10292 }
10393
10494 // configure publishing
10595 pluginManager.apply (MavenPublishPlugin ::class .java)
106- extensions.configure< MavenPublishBaseExtension > {
107- publishToMavenCentral(automaticRelease = true )
108- signAllPublications()
96+ extensions.configure( MavenPublishBaseExtension :: class .java) {
97+ it. publishToMavenCentral(automaticRelease = true )
98+ it. signAllPublications()
10999 }
110100}
111101
112102@Suppress(" LongMethod" , " MagicNumber" )
113103private fun KotlinMultiplatformExtension.configureTargets (project : Project ) {
114104 targets.configureEach {
115- compilations.configureEach {
116- compileTaskProvider.configure {
105+ it. compilations.configureEach {
106+ it. compileTaskProvider.configure {
117107 compilerOptions {
118108 freeCompilerArgs.add(" -Xexpect-actual-classes" )
119109 }
120110 }
121111 }
122112 }
123- project.tasks.withType< KotlinJvmCompile >( ).configureEach {
124- compilerOptions {
113+ project.tasks.withType( KotlinJvmCompile :: class .java ).configureEach {
114+ it. compilerOptions {
125115 jvmTarget.set(JvmTarget .JVM_11 )
126116 freeCompilerArgs.addAll(
127117 " -Xjvm-default=all"
128118 )
129119 }
130120 }
131- project.tasks.withType< KotlinJsCompile >( ).configureEach {
132- compilerOptions {
121+ project.tasks.withType( KotlinJsCompile :: class .java ).configureEach {
122+ it. compilerOptions {
133123 moduleKind.set(JsModuleKind .MODULE_COMMONJS )
134124 }
135125 }
136126 jvm {
137127 val main = compilations.getByName(" main" )
138- compilations.create(" lincheck" ) {
139- defaultSourceSet {
128+ compilations.create(" lincheck" ) { compilation ->
129+ compilation. defaultSourceSet {
140130 dependencies {
141131 implementation(main.compileDependencyFiles + main.output.classesDirs)
142132 }
143133 }
144- project.tasks.register<Test >(" jvmLincheck" ) {
145- classpath = compileDependencyFiles + runtimeDependencyFiles + output.allOutputs
146- testClassesDirs = output.classesDirs
147- useJUnitPlatform()
148- testLogging {
149- events(" passed" , " skipped" , " failed" )
134+ project.tasks.register(" jvmLincheck" , Test ::class .java) {
135+ it.classpath = compilation.compileDependencyFiles +
136+ compilation.runtimeDependencyFiles + compilation.output.allOutputs
137+ it.testClassesDirs = compilation.output.classesDirs
138+ it.useJUnitPlatform()
139+ it.testLogging {
140+ it.events(" passed" , " skipped" , " failed" )
150141 }
151- jvmArgs(
142+ it. jvmArgs(
152143 " --add-opens" , " java.base/jdk.internal.misc=ALL-UNNAMED" ,
153144 " --add-opens" , " java.base/java.lang=ALL-UNNAMED" ,
154145 " --add-exports" , " java.base/jdk.internal.util=ALL-UNNAMED" ,
@@ -183,20 +174,19 @@ private fun KotlinMultiplatformExtension.configureTargets(project: Project) {
183174 mingwX64()
184175 applyDefaultHierarchyTemplate()
185176
186- @Suppress(" UnusedPrivateProperty" )
187- sourceSets {
188- val nonJvmMain by creating {
189- dependsOn(commonMain.get())
177+ with (sourceSets) {
178+ create(" nonJvmMain" ) {
179+ it.dependsOn(commonMain.get())
190180 }
191- val jvmLincheck by getting {
192- dependsOn(jvmMain.get())
181+ getByName( " jvmLincheck" ) {
182+ it. dependsOn(jvmMain.get())
193183 }
194- jsMain.get().dependsOn(nonJvmMain)
195- val wasmJsMain by getting {
196- dependsOn(nonJvmMain)
184+ jsMain.get().dependsOn(getByName( " nonJvmMain" ) )
185+ getByName( " wasmJsMain" ) {
186+ it. dependsOn(getByName( " nonJvmMain" ) )
197187 }
198- appleMain.get().dependsOn(nonJvmMain)
199- linuxMain.get().dependsOn(nonJvmMain)
200- mingwMain.get().dependsOn(nonJvmMain)
188+ appleMain.get().dependsOn(getByName( " nonJvmMain" ) )
189+ linuxMain.get().dependsOn(getByName( " nonJvmMain" ) )
190+ mingwMain.get().dependsOn(getByName( " nonJvmMain" ) )
201191 }
202192}
0 commit comments