Skip to content

Commit 6b72840

Browse files
authored
Let 'javaModulesMergeJars' extend 'internal' if available (#143)
Resolves #138
1 parent f110980 commit 6b72840

File tree

2 files changed

+70
-0
lines changed

2 files changed

+70
-0
lines changed

src/main/java/org/gradlex/javamodule/moduleinfo/ExtraJavaModuleInfoPlugin.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,13 @@ private void configureTransform(Project project, ExtraJavaModuleInfoPluginExtens
153153
}
154154
});
155155

156+
// If 'internal' is added by 'org.gradlex.jvm-dependency-conflict-resolution', extend from it to get access to versions
157+
project.getConfigurations().all(otherConfiguration -> {
158+
if ("internal".equals(otherConfiguration.getName())) {
159+
javaModulesMergeJars.extendsFrom(otherConfiguration);
160+
}
161+
});
162+
156163
Attribute<String> artifactType = Attribute.of("artifactType", String.class);
157164
Attribute<Boolean> javaModule = Attribute.of("javaModule", Boolean.class);
158165

src/test/groovy/org/gradlex/javamodule/moduleinfo/test/CombinationWithOtherPluginsFunctionalTest.groovy

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,69 @@ class CombinationWithOtherPluginsFunctionalTest extends Specification {
1616
settingsFile << 'rootProject.name = "test-project"'
1717
}
1818

19+
def "mergeJar uses versions configured through jvm-dependency-conflict-resolution plugin"() {
20+
given:
21+
file("src/main/java/org/gradle/sample/app/Main.java") << """
22+
package org.gradle.sample.app;
23+
public class Main {
24+
public static void main(String[] args) {
25+
Class<?> loggerFromApi = org.slf4j.Logger.class;
26+
Class<?> ndcFromExt = org.slf4j.NDC.class;
27+
}
28+
}
29+
"""
30+
file("src/main/java/module-info.java") << """
31+
module org.gradle.sample.app {
32+
requires org.slf4j;
33+
}
34+
"""
35+
settingsFile << """
36+
include("versions")
37+
"""
38+
file('versions/build.gradle.kts') << """
39+
plugins { id("java-platform") }
40+
dependencies.constraints {
41+
api("org.slf4j:slf4j-api:1.7.32")
42+
api("org.slf4j:slf4j-ext:1.7.32")
43+
}
44+
"""
45+
buildFile << """
46+
plugins {
47+
id("application")
48+
id("org.gradlex.extra-java-module-info")
49+
id("org.gradlex.jvm-dependency-conflict-resolution") version "2.1.2"
50+
}
51+
application.mainClass.set("org.gradle.sample.app.Main")
52+
dependencies {
53+
implementation("org.slf4j:slf4j-api")
54+
}
55+
jvmDependencyConflicts {
56+
consistentResolution {
57+
providesVersions(":")
58+
platform(":versions")
59+
}
60+
}
61+
extraJavaModuleInfo {
62+
automaticModule("org.slf4j:slf4j-api", "org.slf4j") {
63+
mergeJar("org.slf4j:slf4j-ext")
64+
}
65+
}
66+
tasks.named("run") {
67+
inputs.files(configurations.runtimeClasspath)
68+
doLast { println(inputs.files.map { it.name }) }
69+
}
70+
"""
71+
72+
when:
73+
def result = run()
74+
75+
then:
76+
result.task(":run").outcome == TaskOutcome.SUCCESS
77+
result.output.contains('slf4j-api-1.7.32-module.jar')
78+
!result.output.contains('slf4j-api-1.7.32.jar')
79+
!result.output.contains('slf4j-ext-1.7.32.jar')
80+
}
81+
1982
@IgnoreIf({ !GradleBuild.gradleVersionUnderTest?.startsWith('7.') })
2083
def "works in combination with shadow plugin"() {
2184
def shadowJar = file("app/build/libs/app-all.jar")

0 commit comments

Comments
 (0)