From 68d19b522c670588f449fb98f3798682556a8f94 Mon Sep 17 00:00:00 2001 From: Jendrik Johannes Date: Wed, 31 May 2023 14:10:36 +0200 Subject: [PATCH] Customized dependency analysis (Java Modules) --- gradle/plugins/base-plugins/build.gradle.kts | 1 + .../src/main/kotlin/org.example.root.gradle.kts | 1 + .../dependency-analysis-plugins/build.gradle.kts | 7 +++++++ .../org.example.dependency-analysis-project.gradle.kts | 8 ++++++++ .../org.example.dependency-analysis-root.gradle.kts | 10 ++++++++++ .../src/main/kotlin/org.example.java.gradle.kts | 1 + gradle/plugins/plugins-platform/build.gradle.kts | 1 + 7 files changed, 29 insertions(+) create mode 100644 gradle/plugins/dependency-analysis-plugins/src/main/kotlin/org.example.dependency-analysis-project.gradle.kts create mode 100644 gradle/plugins/dependency-analysis-plugins/src/main/kotlin/org.example.dependency-analysis-root.gradle.kts diff --git a/gradle/plugins/base-plugins/build.gradle.kts b/gradle/plugins/base-plugins/build.gradle.kts index 9b4b3d79..cd774386 100644 --- a/gradle/plugins/base-plugins/build.gradle.kts +++ b/gradle/plugins/base-plugins/build.gradle.kts @@ -5,5 +5,6 @@ plugins { dependencies { implementation(platform(project(":plugins-platform"))) + implementation(project(":dependency-analysis-plugins")) implementation(project(":dependency-rules-plugins")) } diff --git a/gradle/plugins/base-plugins/src/main/kotlin/org.example.root.gradle.kts b/gradle/plugins/base-plugins/src/main/kotlin/org.example.root.gradle.kts index dcd6e759..1db9f6ae 100644 --- a/gradle/plugins/base-plugins/src/main/kotlin/org.example.root.gradle.kts +++ b/gradle/plugins/base-plugins/src/main/kotlin/org.example.root.gradle.kts @@ -1,5 +1,6 @@ plugins { id("lifecycle-base") + id("org.example.dependency-analysis-root") } // Configure the ':tasks' task of the root project to only show diff --git a/gradle/plugins/dependency-analysis-plugins/build.gradle.kts b/gradle/plugins/dependency-analysis-plugins/build.gradle.kts index bc0172f0..3a6ce05f 100644 --- a/gradle/plugins/dependency-analysis-plugins/build.gradle.kts +++ b/gradle/plugins/dependency-analysis-plugins/build.gradle.kts @@ -1,3 +1,10 @@ plugins { `kotlin-dsl` } + +dependencies { + implementation(platform(project(":plugins-platform"))) + + implementation("com.autonomousapps:dependency-analysis-gradle-plugin") + implementation("org.gradlex:java-module-dependencies") +} diff --git a/gradle/plugins/dependency-analysis-plugins/src/main/kotlin/org.example.dependency-analysis-project.gradle.kts b/gradle/plugins/dependency-analysis-plugins/src/main/kotlin/org.example.dependency-analysis-project.gradle.kts new file mode 100644 index 00000000..9065acd9 --- /dev/null +++ b/gradle/plugins/dependency-analysis-plugins/src/main/kotlin/org.example.dependency-analysis-project.gradle.kts @@ -0,0 +1,8 @@ +plugins { + id("java") + id("org.gradlex.java-module-dependencies") +} + +tasks.check { + dependsOn(tasks.checkAllModuleInfo) +} diff --git a/gradle/plugins/dependency-analysis-plugins/src/main/kotlin/org.example.dependency-analysis-root.gradle.kts b/gradle/plugins/dependency-analysis-plugins/src/main/kotlin/org.example.dependency-analysis-root.gradle.kts new file mode 100644 index 00000000..ac62c304 --- /dev/null +++ b/gradle/plugins/dependency-analysis-plugins/src/main/kotlin/org.example.dependency-analysis-root.gradle.kts @@ -0,0 +1,10 @@ +plugins { + id("com.autonomousapps.dependency-analysis") +} + +// Lifecycle task to check dependency scopes in all subprojects +tasks.register("checkAllModuleInfo") { + group = LifecycleBasePlugin.VERIFICATION_GROUP + description = "Check scope and order of directives in 'module-info.java' files" + dependsOn(subprojects.map { "${it.path}:checkAllModuleInfo"}) +} diff --git a/gradle/plugins/java-base-plugins/src/main/kotlin/org.example.java.gradle.kts b/gradle/plugins/java-base-plugins/src/main/kotlin/org.example.java.gradle.kts index cec324ad..6dc7b5fe 100644 --- a/gradle/plugins/java-base-plugins/src/main/kotlin/org.example.java.gradle.kts +++ b/gradle/plugins/java-base-plugins/src/main/kotlin/org.example.java.gradle.kts @@ -5,6 +5,7 @@ plugins { id("jacoco") // Record test coverage data during test execution id("org.example.base") id("org.example.consistent-resolution") + id("org.example.dependency-analysis-project") } // Configure Java compilation on java {} extension or directly on 'JavaCompile' tasks diff --git a/gradle/plugins/plugins-platform/build.gradle.kts b/gradle/plugins/plugins-platform/build.gradle.kts index adf84139..7d820d7c 100644 --- a/gradle/plugins/plugins-platform/build.gradle.kts +++ b/gradle/plugins/plugins-platform/build.gradle.kts @@ -3,6 +3,7 @@ plugins { } dependencies.constraints { + api("com.autonomousapps:dependency-analysis-gradle-plugin:1.27.0") api("dev.jacomet.gradle.plugins:logging-capabilities:0.11.1") api("io.fuchs.gradle.classpath-collision-detector:classpath-collision-detector:0.3") api("org.gradlex:extra-java-module-info:1.6")