Skip to content

Commit b1f3923

Browse files
committed
Gradle 9 Support
remove use of ConfigureUtil update max kotlin version for testing to 2.2.0
1 parent 976ec28 commit b1f3923

File tree

5 files changed

+27
-26
lines changed

5 files changed

+27
-26
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
77

88
## [Unreleased]
99

10+
- Gradle 9 Support [#937](https://github.com/JLLeitschuh/ktlint-gradle/pull/937)
11+
1012
## [13.0.0] - 2025-07-07
1113

1214
- remove support for ktlint < 1 [#889](https://github.com/JLLeitschuh/ktlint-gradle/pull/889)

plugin/src/main/kotlin/org/jlleitschuh/gradle/ktlint/KtlintBasePlugin.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import org.gradle.api.Task
88
import org.gradle.api.file.ConfigurableFileTree
99
import org.gradle.api.tasks.util.PatternFilterable
1010
import org.gradle.util.GradleVersion
11-
import org.jlleitschuh.gradle.ktlint.reporter.CustomReporter
1211
import org.jlleitschuh.gradle.ktlint.tasks.BaseKtLintCheckTask
1312
import org.jlleitschuh.gradle.ktlint.tasks.KtLintCheckTask
1413
import org.jlleitschuh.gradle.ktlint.tasks.KtLintFormatTask
@@ -47,7 +46,6 @@ open class KtlintBasePlugin : Plugin<Project> {
4746
"ktlint",
4847
KtlintExtension::class.java,
4948
target.objects,
50-
target.container(CustomReporter::class.java) { CustomReporter(it) },
5149
filterTargetApplier,
5250
kotlinScriptAdditionalPathApplier
5351
)

plugin/src/main/kotlin/org/jlleitschuh/gradle/ktlint/KtlintExtension.kt

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.jlleitschuh.gradle.ktlint
22

3-
import groovy.lang.Closure
43
import org.gradle.api.Action
54
import org.gradle.api.NamedDomainObjectContainer
65
import org.gradle.api.file.ConfigurableFileTree
@@ -11,27 +10,24 @@ import org.gradle.api.provider.MapProperty
1110
import org.gradle.api.provider.Property
1211
import org.gradle.api.provider.SetProperty
1312
import org.gradle.api.tasks.util.PatternFilterable
14-
import org.gradle.util.ConfigureUtil
13+
import org.gradle.kotlin.dsl.domainObjectContainer
14+
import org.gradle.kotlin.dsl.newInstance
1515
import org.jlleitschuh.gradle.ktlint.reporter.CustomReporter
1616
import org.jlleitschuh.gradle.ktlint.reporter.ReporterType
17+
import javax.inject.Inject
1718

1819
/**
1920
* Extension class for configuring the [KtlintPlugin].
2021
* @param filterTargetApplier When [KtlintExtension.filter] is called, this function is executed.
2122
*/
2223
@Suppress("UnstableApiUsage")
23-
open class KtlintExtension
24-
internal constructor(
24+
open class KtlintExtension @Inject internal constructor(
2525
objectFactory: ObjectFactory,
2626
projectLayout: ProjectLayout,
27-
customReportersContainer: NamedDomainObjectContainer<CustomReporter>,
2827
private val filterTargetApplier: FilterApplier,
2928
kotlinScriptAdditionalPathApplier: KotlinScriptAdditionalPathApplier
3029
) {
31-
internal val reporterExtension = ReporterExtension(
32-
customReportersContainer,
33-
objectFactory
34-
)
30+
val reporterExtension = objectFactory.newInstance(ReporterExtension::class)
3531

3632
/**
3733
* The version of KtLint to use.
@@ -154,13 +150,14 @@ internal constructor(
154150
}
155151
}
156152

157-
class ReporterExtension(
158-
val customReporters: NamedDomainObjectContainer<CustomReporter>,
153+
open class ReporterExtension @Inject constructor(
159154
objectFactory: ObjectFactory
160155
) {
161156
internal val reporters: SetProperty<ReporterType> = objectFactory.setProperty {
162157
set(emptySet())
163158
}
159+
val customReporters: NamedDomainObjectContainer<CustomReporter> =
160+
objectFactory.domainObjectContainer(CustomReporter::class) { CustomReporter(it) }
164161

165162
/**
166163
* Use one of default Ktlint output reporter
@@ -176,10 +173,8 @@ internal constructor(
176173
/**
177174
* Add 3rd party reporters.
178175
*/
179-
fun customReporters(configuration: Closure<NamedDomainObjectContainer<CustomReporter>>) {
180-
// This method is needed for Groovy interop
181-
// See https://discuss.gradle.org/t/multi-level-dsl-for-plugin-extension/19029/16
182-
ConfigureUtil.configure(configuration, customReporters)
176+
fun customReporters(configuration: Action<NamedDomainObjectContainer<CustomReporter>>) {
177+
configuration.execute(customReporters)
183178
}
184179
}
185180
}

plugin/src/test/kotlin/org/jlleitschuh/gradle/ktlint/android/KtlintPluginAndroidTest.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,6 @@ class KtlintPluginAndroidTest : AbstractPluginTest() {
8888
minimumJava = 11,
8989
maximumJava = 17
9090
),
91-
MAX_GRADLE_MIN_AGP(
92-
GradleVersion.version(TestVersions.maxSupportedGradleVersion),
93-
TestVersions.minAgpVersion,
94-
TestVersions.minSupportedKotlinPluginVersion
95-
),
9691
MAX(
9792
GradleVersion.version(TestVersions.maxSupportedGradleVersion),
9893
TestVersions.maxAgpVersion,

plugin/src/test/kotlin/org/jlleitschuh/gradle/ktlint/testdsl/TestAnnotations.kt

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.jlleitschuh.gradle.ktlint.testdsl
22

3+
import net.swiftzer.semver.SemVer
34
import org.gradle.util.GradleVersion
45
import org.jlleitschuh.gradle.ktlint.KtlintPlugin
56
import org.junit.jupiter.api.extension.ExtensionContext
@@ -8,15 +9,26 @@ import org.junit.jupiter.params.provider.ArgumentsProvider
89
import java.util.stream.Stream
910
import kotlin.streams.asStream
1011

12+
fun getCurrentJavaVersion(): String {
13+
return Runtime::class.java.getPackage().specificationVersion // java 8
14+
?: Runtime::class.java.getMethod("version").invoke(null).toString() // java 9+
15+
}
16+
1117
@Suppress("ConstPropertyName")
1218
object TestVersions {
1319
const val minSupportedGradleVersion = "7.6.3" // lowest version for testing
14-
const val maxSupportedGradleVersion = "8.13"
20+
val maxSupportedGradleVersion =
21+
// gradle 9 requires Java 17
22+
if (SemVer.parse(getCurrentJavaVersion()).major >= 17) {
23+
"9.0.0"
24+
} else {
25+
"8.14.3"
26+
}
1527
val pluginVersion = System.getProperty("project.version")
1628
?: KtlintPlugin::class.java.`package`.implementationVersion
1729
?: error("Unable to determine plugin version.")
1830
const val minSupportedKotlinPluginVersion = "1.6.21"
19-
const val maxSupportedKotlinPluginVersion = "2.1.21"
31+
const val maxSupportedKotlinPluginVersion = "2.2.0"
2032
const val minAgpVersion = "4.1.0"
2133
const val maxAgpVersion = "8.8.0"
2234
}
@@ -25,7 +37,6 @@ object TestVersions {
2537
@Retention(AnnotationRetention.RUNTIME)
2638
annotation class GradleTestVersions(
2739
val minVersion: String = TestVersions.minSupportedGradleVersion,
28-
val maxVersion: String = TestVersions.maxSupportedGradleVersion,
2940
val additionalVersions: Array<String> = []
3041
)
3142

@@ -55,7 +66,7 @@ open class GradleArgumentsProvider : ArgumentsProvider {
5566
} else {
5667
GradleVersion.version(versionsAnnotation.minVersion)
5768
}
58-
val maxGradleVersion = GradleVersion.version(versionsAnnotation.maxVersion)
69+
val maxGradleVersion = GradleVersion.version(TestVersions.maxSupportedGradleVersion)
5970
val additionalGradleVersions = versionsAnnotation
6071
.additionalVersions
6172
.map(GradleVersion::version)

0 commit comments

Comments
 (0)