Skip to content

Commit 77c95c9

Browse files
committed
Add another 'version' notation to Module Version DSL
1 parent b212888 commit 77c95c9

File tree

2 files changed

+35
-3
lines changed

2 files changed

+35
-3
lines changed

src/main/java/org/gradlex/javamodule/dependencies/dsl/ModuleVersions.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,20 @@ public ModuleVersions(Configuration configuration, JavaModuleDependenciesExtensi
3939
}
4040

4141
public void version(String moduleName, String version) {
42-
version(moduleName, a -> a.require(version));
42+
version(moduleName, version, a -> {});
4343
}
4444

4545
public void version(String moduleName, Action<? super MutableVersionConstraint> version) {
46+
version(moduleName, "", version);
47+
}
48+
49+
public void version(String moduleName, String requiredVersion, Action<? super MutableVersionConstraint> version) {
4650
getDependencies().getConstraints().add(configuration.getName(), javaModuleDependencies.ga(moduleName).map(ga -> {
4751
String mainComponentCoordinates;
4852
if (ga.contains("|")) {
49-
mainComponentCoordinates = ga.substring(0, ga.indexOf("|"));
53+
mainComponentCoordinates = ga.substring(0, ga.indexOf("|")) + ":" + requiredVersion;
5054
} else {
51-
mainComponentCoordinates = ga;
55+
mainComponentCoordinates = ga + ":" + requiredVersion;
5256
}
5357
DependencyConstraint dependencyConstraint = getDependencies().getConstraints().create(mainComponentCoordinates);
5458
dependencyConstraint.version(version);

src/test/groovy/org/gradlex/javamodule/dependencies/test/CustomizationTest.groovy

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,4 +108,32 @@ class CustomizationTest extends Specification {
108108
then:
109109
compile.output.contains('[xmlbeans-5.0.1.jar, jackson-annotations-2.12.5.jar, jackson-core-2.12.5.jar, jackson-databind-2.12.5.jar, log4j-api-2.14.0.jar]')
110110
}
111+
112+
def "can define versions in platform with different notations"() {
113+
given:
114+
def customModulesPropertiesFile = file("gradle/modules.properties")
115+
116+
customModulesPropertiesFile << 'jakarta.mail=com.sun.mail:jakarta.mail'
117+
appBuildFile << '''
118+
moduleInfo {
119+
version("jakarta.mail", "2.0.1")
120+
version("jakarta.servlet", "6.0.0") { reject("[7.0.0,)") }
121+
version("java.inject") { require("1.0.5"); reject("[2.0.0,)") }
122+
}
123+
'''
124+
125+
appModuleInfoFile << '''
126+
module org.gradlex.test.app {
127+
requires jakarta.mail;
128+
requires jakarta.servlet;
129+
requires java.inject;
130+
}
131+
'''
132+
133+
when:
134+
def result = printRuntimeJars()
135+
136+
then:
137+
result.output.contains('[jakarta.mail-2.0.1.jar, jakarta.servlet-api-6.0.0.jar, jakarta.inject-api-1.0.5.jar, jakarta.activation-2.0.1.jar]')
138+
}
111139
}

0 commit comments

Comments
 (0)