Skip to content

Commit

Permalink
#785 - define JPMS module names
Browse files Browse the repository at this point in the history
## 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: `<groupId>.<moduleName>` (e.g. `org.incendo.cloud.core`).

Details about this change can be found here: #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.core;
  [...]
}
```

To:
```java
module my.module {
  [...]
  requires org.incendo.cloud.core;
  [...]
}
```

Closes #785
  • Loading branch information
Djaytan committed Jan 12, 2025
1 parent 3c83f9a commit 878a12f
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions gradle/build-logic/src/main/kotlin/CloudBaseConventions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@ import com.diffplug.gradle.spotless.SpotlessExtension
import net.kyori.indra.IndraExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.tasks.bundling.Jar
import org.gradle.kotlin.dsl.attributes
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.withType
import org.incendo.cloudbuildlogic.CloudSpotlessExtension

class CloudBaseConventions : Plugin<Project> {
Expand Down Expand Up @@ -43,5 +46,11 @@ class CloudBaseConventions : Plugin<Project> {

"checkstyle"(libs.stylecheck)
}

target.tasks.withType(Jar::class).configureEach {
manifest {
attributes("Automatic-Module-Name" to "%s.%s".format(target.group, target.name.replace('-', '.')))
}
}
}
}

0 comments on commit 878a12f

Please sign in to comment.