diff --git a/build.gradle.kts b/build.gradle.kts index 695df045..f5df2fe5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -23,6 +23,7 @@ import org.gradle.api.file.FileCollection import org.gradle.process.CommandLineArgumentProvider plugins { + alias(libs.plugins.dependencyAnalysis) alias(libs.plugins.dokka) apply false alias(libs.plugins.dokka.javadoc) apply false alias(libs.plugins.intelliJPlatform) apply false @@ -58,7 +59,8 @@ val ktfmtFiles = include("**/*.kt") include("**/*.kts") exclude("**/build/**") - exclude("facebook/**") + exclude("**/.gradle/**") + exclude("**/.intellijPlatform/**") } class KtfmtArgumentsProvider( @@ -97,6 +99,21 @@ val ktfmtFormat = configureKtfmtRun(ktfmtFiles, check = false) } +dependencyAnalysis { + issues { + all { + // Compiled by a separate task against a handcrafted classpath + ignoreSourceSet("nativeImageSourceSet") + onUnusedDependencies { + severity("fail") + } + onAny { + severity("warn") + } + } + } +} + subprojects { tasks.named { it == "check" }.configureEach { dependsOn(rootProject.tasks.named("ktfmtCheck")) } } diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 8fad6778..d539923e 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation plugins { kotlin("jvm") + alias(libs.plugins.dependencyAnalysis) alias(libs.plugins.dokka) alias(libs.plugins.dokka.javadoc) alias(libs.plugins.shadowJar) @@ -37,19 +38,20 @@ repositories { dependencies { api(libs.googleJavaformat) api(libs.guava) - api(libs.jna) api(libs.kotlin.stdlib) api(libs.kotlin.compilerEmbeddable) implementation(libs.ec4j) testImplementation(platform(libs.junit.bom)) - testImplementation(libs.junit.jupiter) + testImplementation(libs.junit.jupiter.api) + testRuntimeOnly(libs.junit.jupiter.engine) testRuntimeOnly(libs.junit.platform.launcher) } -val generateSources by tasks.registering { - outputs.dir(layout.buildDirectory.dir("generated/main/java")) - dependsOn(tasks.withType()) -} +val generateSources = + tasks.register("generateSources") { + outputs.dir(layout.buildDirectory.dir("generated/main/java")) + dependsOn(tasks.withType()) + } tasks { // Run tests with UTF-16 encoding diff --git a/gradle.properties b/gradle.properties index 6a9a1100..0be92b25 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,4 @@ ktfmt.version=0.65-SNAPSHOT kotlin.code.style=official org.gradle.jvmargs=-Xmx2G +org.gradle.configuration-cache=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 033a5ba8..0bb05db6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,13 +3,13 @@ java = "17" kotlin = "2.3.20" com-google-googlejavaformat-google-java-format = "1.23.0" com-google-guava-guava = "33.5.0-jre" -net-java-dev-jna-jna = "4.2.2" org-ec4j-core = "1.2.0" org-junit-junit-bom = "6.1.2" # plugins +gradlePlugin-dependencyAnalysis = "3.18.0" gradlePlugin-dokka = "2.2.0" -gradlePlugin-intelliJPlatform = "2.6.0" +gradlePlugin-intelliJPlatform = "2.12.0" gradlePlugin-nexusPublish = "2.0.0" gradlePlugin-shadowJar = "9.0.2" @@ -18,13 +18,14 @@ ec4j = { module = "org.ec4j.core:ec4j-core", version.ref = "org-ec4j-core" } googleJavaformat = { module = "com.google.googlejavaformat:google-java-format", version.ref = "com-google-googlejavaformat-google-java-format" } guava = { module = "com.google.guava:guava", version.ref = "com-google-guava-guava" } junit-bom = { module = "org.junit:junit-bom", version.ref = "org-junit-junit-bom" } -junit-jupiter = { module = "org.junit.jupiter:junit-jupiter" } +junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api" } +junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine" } junit-platform-launcher = { module = "org.junit.platform:junit-platform-launcher" } -jna = { module = "net.java.dev.jna:jna", version.ref = "net-java-dev-jna-jna" } kotlin-compilerEmbeddable = { module = "org.jetbrains.kotlin:kotlin-compiler-embeddable", version.ref = "kotlin" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } [plugins] +dependencyAnalysis = { id = "com.autonomousapps.dependency-analysis", version.ref = "gradlePlugin-dependencyAnalysis" } dokka = { id = "org.jetbrains.dokka", version.ref = "gradlePlugin-dokka" } dokka-javadoc = { id = "org.jetbrains.dokka-javadoc", version.ref = "gradlePlugin-dokka" } intelliJPlatform = { id = "org.jetbrains.intellij.platform", version.ref = "gradlePlugin-intelliJPlatform" } diff --git a/gradle/native-image.versions.toml b/gradle/native-image.versions.toml index c47c77d9..fabda3fa 100644 --- a/gradle/native-image.versions.toml +++ b/gradle/native-image.versions.toml @@ -1,6 +1,6 @@ [versions] org-graalvm = "25.0.1" -graalvmPlugin = "0.11.1" +graalvmPlugin = "1.1.8" org-jline = "3.30.6" [libraries] diff --git a/ktfmt_idea_plugin/build.gradle.kts b/ktfmt_idea_plugin/build.gradle.kts index cf7b954a..80b9c2d0 100644 --- a/ktfmt_idea_plugin/build.gradle.kts +++ b/ktfmt_idea_plugin/build.gradle.kts @@ -18,6 +18,7 @@ import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType.IntellijIdeaC plugins { java + alias(libs.plugins.dependencyAnalysis) alias(libs.plugins.kotlin) alias(libs.plugins.intelliJPlatform) } @@ -48,6 +49,9 @@ dependencies { } implementation(project(":ktfmt")) + implementation(libs.googleJavaformat) + implementation(libs.guava) + implementation(libs.kotlin.compilerEmbeddable) } intellijPlatform {