@@ -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