From 59bb4fa61f3c09260c130a4f161b4bcc279c9090 Mon Sep 17 00:00:00 2001 From: Djaytan <26904516+Djaytan@users.noreply.github.com> Date: Sun, 12 Jan 2025 18:52:27 +0100 Subject: [PATCH] define JPMS module names _This change is similar to https://github.com/Incendo/cloud/pull/787_ ## Summary The goal of this change is to encourage Gradle to put the framework's Jar files in the module path instead of the classpath. For that, we need to explicitly define the `Automatic-Module-Name` attribute in the `MANIFEST.MF` files in framework's Jar files (source: https://docs.gradle.org/current/userguide/java_library_plugin.html#using_libraries_that_are_not_modules). The newly added attribute follows this format: `.` (e.g. `org.incendo.cloud-paper`). Details about this change can be found here: https://github.com/Incendo/cloud/issues/785. ## Impact There is no impact nor on maintainer side nor or consumer one not relying on JPMS. For the ones already relying on JPMS (e.g. Maven users), they will just have to adapt the references in their `module-info.java` files as follow: From: ```java module my.module { [...] requires cloud-paper; [...] } ``` To: ```java module my.module { [...] requires org.incendo.cloud-paper; [...] } ``` --- .../src/main/kotlin/conventions.base.gradle.kts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gradle/build-logic/src/main/kotlin/conventions.base.gradle.kts b/gradle/build-logic/src/main/kotlin/conventions.base.gradle.kts index 27ca90f4..28898232 100644 --- a/gradle/build-logic/src/main/kotlin/conventions.base.gradle.kts +++ b/gradle/build-logic/src/main/kotlin/conventions.base.gradle.kts @@ -38,3 +38,11 @@ dependencies { /* Disable checkstyle on tests */ gradle.startParameter.excludedTaskNames.add("checkstyleTest") + +tasks { + jar { + manifest { + attributes("Automatic-Module-Name" to "%s.%s".format(project.group, archiveBaseName.get())) + } + } +}