Skip to content

Commit bd66673

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

File tree

8 files changed

+21
-33
lines changed

8 files changed

+21
-33
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/build.gradle.kts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -169,12 +169,6 @@ tasks.withType<Test> {
169169
maxFailures.set(10)
170170
}
171171
}
172-
173-
javaLauncher.set(
174-
javaToolchains.launcherFor {
175-
languageVersion.set(JavaLanguageVersion.of(JavaVersion.current().majorVersion))
176-
}
177-
)
178172
}
179173

180174
val relocateShadowJar = tasks.register<ConfigureShadowRelocation>("relocateShadowJar")
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
toolchainVersion=17

plugin/settings.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ pluginManagement {
1616

1717
plugins {
1818
id("com.gradle.develocity") version "3.17"
19-
id("org.gradle.toolchains.foojay-resolver-convention") version "0.10.0"
19+
id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
2020
}
2121

2222
develocity {

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: 7 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
@@ -11,12 +12,15 @@ import kotlin.streams.asStream
1112
@Suppress("ConstPropertyName")
1213
object TestVersions {
1314
const val minSupportedGradleVersion = "7.6.3" // lowest version for testing
14-
const val maxSupportedGradleVersion = "8.13"
15+
val maxSupportedGradleVersion =
16+
// gradle 9 requires JAva 17
17+
if (SemVer.parse(Runtime::class.java.getPackage().specificationVersion).major >= 17) "9.0.0"
18+
else "8.14.3"
1519
val pluginVersion = System.getProperty("project.version")
1620
?: KtlintPlugin::class.java.`package`.implementationVersion
1721
?: error("Unable to determine plugin version.")
1822
const val minSupportedKotlinPluginVersion = "1.6.21"
19-
const val maxSupportedKotlinPluginVersion = "2.1.21"
23+
const val maxSupportedKotlinPluginVersion = "2.2.0"
2024
const val minAgpVersion = "4.1.0"
2125
const val maxAgpVersion = "8.8.0"
2226
}
@@ -25,7 +29,6 @@ object TestVersions {
2529
@Retention(AnnotationRetention.RUNTIME)
2630
annotation class GradleTestVersions(
2731
val minVersion: String = TestVersions.minSupportedGradleVersion,
28-
val maxVersion: String = TestVersions.maxSupportedGradleVersion,
2932
val additionalVersions: Array<String> = []
3033
)
3134

@@ -55,7 +58,7 @@ open class GradleArgumentsProvider : ArgumentsProvider {
5558
} else {
5659
GradleVersion.version(versionsAnnotation.minVersion)
5760
}
58-
val maxGradleVersion = GradleVersion.version(versionsAnnotation.maxVersion)
61+
val maxGradleVersion = GradleVersion.version(TestVersions.maxSupportedGradleVersion)
5962
val additionalGradleVersions = versionsAnnotation
6063
.additionalVersions
6164
.map(GradleVersion::version)

0 commit comments

Comments
 (0)