Skip to content

Commit 4b9a0db

Browse files
committed
Add 'gav()' method to extension
1 parent 8342a7b commit 4b9a0db

File tree

3 files changed

+30
-11
lines changed

3 files changed

+30
-11
lines changed

samples/custom-catalog/app/build.gradle.kts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,3 @@ application {
77
mainClass.set("org.my.app.App")
88
mainModule.set("org.my.app")
99
}
10-
11-
dependencies.constraints {
12-
implementation(javaModuleDependencies.ga("com.fasterxml.jackson.databind")) {
13-
version { require("2.12.5") }
14-
}
15-
}

src/main/java/de/jjohannes/gradle/moduledependencies/JavaModuleDependenciesExtension.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package de.jjohannes.gradle.moduledependencies;
22

3+
import org.gradle.api.artifacts.VersionCatalog;
4+
import org.gradle.api.artifacts.VersionCatalogsExtension;
5+
import org.gradle.api.artifacts.VersionConstraint;
36
import org.gradle.api.provider.MapProperty;
47
import org.gradle.api.provider.Property;
58
import org.gradle.api.provider.Provider;
@@ -8,9 +11,12 @@
811
import java.io.InputStream;
912
import java.util.Properties;
1013

14+
@SuppressWarnings("UnstableApiUsage")
1115
public abstract class JavaModuleDependenciesExtension {
1216
public static String JAVA_MODULE_DEPENDENCIES = "javaModuleDependencies";
1317

18+
private final VersionCatalogsExtension versionCatalogs;
19+
1420
private Properties globalModuleNameToGA;
1521

1622
public abstract MapProperty<String, String> getModuleNameToGA();
@@ -21,6 +27,10 @@ public abstract class JavaModuleDependenciesExtension {
2127

2228
public abstract Property<String> getVersionCatalogName();
2329

30+
public JavaModuleDependenciesExtension(VersionCatalogsExtension versionCatalogs) {
31+
this.versionCatalogs = versionCatalogs;
32+
}
33+
2434
public String ga(String moduleName) {
2535
Provider<String> customMapping = getModuleNameToGA().getting(moduleName);
2636
if (customMapping.isPresent()) {
@@ -30,6 +40,18 @@ public String ga(String moduleName) {
3040
}
3141
}
3242

43+
public String gav(String moduleName) {
44+
String ga = ga(moduleName);
45+
String catalogName = getVersionCatalogName().forUseAtConfigurationTime().get();
46+
VersionCatalog catalog = versionCatalogs.named(catalogName);
47+
VersionConstraint version = catalog.findVersion(moduleName).orElse(null);
48+
if (version == null) {
49+
return ga;
50+
} else {
51+
return ga + ":" + version.getRequiredVersion();
52+
}
53+
}
54+
3355
private Properties getGlobalModuleNameToGA() {
3456
if (this.globalModuleNameToGA != null) {
3557
return this.globalModuleNameToGA;

src/main/java/de/jjohannes/gradle/moduledependencies/JavaModuleDependenciesPlugin.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@
2828
public abstract class JavaModuleDependenciesPlugin implements Plugin<Project> {
2929

3030
private final Map<File, ModuleInfo> moduleInfo = new HashMap<>();
31-
private boolean catalogFound = true;
31+
private VersionCatalogsExtension versionCatalogs = null;
32+
private boolean catalogNotFoundWarningPrinted = false;
3233

3334
@Override
3435
public void apply(Project project) {
@@ -37,8 +38,11 @@ public void apply(Project project) {
3738
}
3839

3940
project.getPlugins().apply(JavaPlugin.class);
41+
42+
versionCatalogs = project.getExtensions().findByType(VersionCatalogsExtension.class);
43+
4044
JavaModuleDependenciesExtension javaModuleDependenciesExtension = project.getExtensions().create(
41-
JAVA_MODULE_DEPENDENCIES, JavaModuleDependenciesExtension.class);
45+
JAVA_MODULE_DEPENDENCIES, JavaModuleDependenciesExtension.class, versionCatalogs);
4246
javaModuleDependenciesExtension.getOwnModuleNamesPrefix().convention(
4347
project.provider(() -> project.getGroup().toString()));
4448
javaModuleDependenciesExtension.getWarnForMissingVersions().convention(true);
@@ -110,10 +114,9 @@ private Map<String, Object> toGAV(String moduleName, String ga, Project project,
110114
Map<String, Object> gav = new HashMap<>();
111115

112116
VersionConstraint version = null;
113-
VersionCatalogsExtension versionCatalogs = project.getExtensions().findByType(VersionCatalogsExtension.class);
114117
if (versionCatalogs == null) {
115118
warnVersionMissing(project.getLogger(), javaModuleDependenciesExtension, "Version catalog feature not enabled in settings.gradle(.kts) - add 'enableFeaturePreview(\"VERSION_CATALOGS\")'");
116-
catalogFound = false;
119+
catalogNotFoundWarningPrinted = true;
117120
} else {
118121
String catalogName = javaModuleDependenciesExtension.getVersionCatalogName().forUseAtConfigurationTime().get();
119122
VersionCatalog catalog = versionCatalogs.named(catalogName);
@@ -134,7 +137,7 @@ private Map<String, Object> toGAV(String moduleName, String ga, Project project,
134137
}
135138

136139
private void warnVersionMissing(Logger logger, JavaModuleDependenciesExtension javaModuleDependenciesExtension, String message) {
137-
if (catalogFound && javaModuleDependenciesExtension.getWarnForMissingVersions().forUseAtConfigurationTime().get()) {
140+
if (!catalogNotFoundWarningPrinted && javaModuleDependenciesExtension.getWarnForMissingVersions().forUseAtConfigurationTime().get()) {
138141
logger.warn("[WARN] [Java Module Dependencies] " + message);
139142
}
140143
}

0 commit comments

Comments
 (0)