Skip to content

Commit cbe2f72

Browse files
committed
Add more context to missing version warning
1 parent 4a0c8fd commit cbe2f72

File tree

3 files changed

+30
-30
lines changed

3 files changed

+30
-30
lines changed

samples/no-versions-warning/build.out

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
> Task :build-logic:jar
2-
[WARN] [Java Module Dependencies] No version defined in catalog - com_fasterxml_jackson_databind
2+
[WARN] [Java Module Dependencies] No version defined in catalog - com.fasterxml.jackson.core:jackson-databind - com_fasterxml_jackson_databind (required in app/src/main/java/module-info.java)
33
> Task :app:compileJava
44
> Task :app:processResources NO-SOURCE
55
> Task :app:classes

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

+2-19
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package de.jjohannes.gradle.moduledependencies;
22

3-
import org.gradle.api.artifacts.Configuration;
43
import org.gradle.api.artifacts.VersionCatalog;
54
import org.gradle.api.artifacts.VersionCatalogsExtension;
65
import org.gradle.api.artifacts.VersionConstraint;
7-
import org.gradle.api.logging.Logger;
86
import org.gradle.api.provider.MapProperty;
97
import org.gradle.api.provider.Property;
108
import org.gradle.api.provider.Provider;
@@ -20,8 +18,6 @@ public abstract class JavaModuleDependenciesExtension {
2018
public static String JAVA_MODULE_DEPENDENCIES = "javaModuleDependencies";
2119

2220
private final VersionCatalogsExtension versionCatalogs;
23-
private final Logger logger;
24-
private boolean catalogNotFoundWarningPrinted = false;
2521

2622
private Properties globalModuleNameToGA;
2723

@@ -33,9 +29,8 @@ public abstract class JavaModuleDependenciesExtension {
3329

3430
public abstract Property<String> getVersionCatalogName();
3531

36-
public JavaModuleDependenciesExtension(VersionCatalogsExtension versionCatalogs, Logger logger) {
32+
public JavaModuleDependenciesExtension(VersionCatalogsExtension versionCatalogs) {
3733
this.versionCatalogs = versionCatalogs;
38-
this.logger = logger;
3934
}
4035

4136
public String ga(String moduleName) {
@@ -57,16 +52,10 @@ public Map<String, Object> gav(String moduleName) {
5752
String ga = ga(moduleName);
5853

5954
VersionConstraint version = null;
60-
if (versionCatalogs == null) {
61-
warnVersionMissing("Version catalog feature not enabled in settings.gradle(.kts) - add 'enableFeaturePreview(\"VERSION_CATALOGS\")'");
62-
catalogNotFoundWarningPrinted = true;
63-
} else {
55+
if (versionCatalogs != null) {
6456
String catalogName = getVersionCatalogName().forUseAtConfigurationTime().get();
6557
VersionCatalog catalog = versionCatalogs.named(catalogName);
6658
version = catalog.findVersion(moduleName).orElse(null);
67-
if (version == null) {
68-
warnVersionMissing("No version defined in catalog - " + moduleName.replace('.', '_'));
69-
}
7059
}
7160

7261
String[] gaSplit = ga.split(":");
@@ -105,10 +94,4 @@ private Properties getGlobalModuleNameToGA() {
10594
}
10695
return this.globalModuleNameToGA;
10796
}
108-
109-
private void warnVersionMissing(String message) {
110-
if (!catalogNotFoundWarningPrinted && getWarnForMissingVersions().forUseAtConfigurationTime().get()) {
111-
logger.warn("[WARN] [Java Module Dependencies] " + message);
112-
}
113-
}
11497
}

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

+27-10
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
public abstract class JavaModuleDependenciesPlugin implements Plugin<Project> {
2828

2929
private final Map<File, ModuleInfo> moduleInfo = new HashMap<>();
30+
private boolean warnForMissingCatalog;
3031

3132
@Override
3233
public void apply(Project project) {
@@ -37,12 +38,13 @@ public void apply(Project project) {
3738
project.getPlugins().apply(JavaPlugin.class);
3839

3940
VersionCatalogsExtension versionCatalogs = project.getExtensions().findByType(VersionCatalogsExtension.class);
41+
warnForMissingCatalog = versionCatalogs == null;
4042

4143
JavaModuleDependenciesExtension javaModuleDependenciesExtension = project.getExtensions().create(
42-
JAVA_MODULE_DEPENDENCIES, JavaModuleDependenciesExtension.class, versionCatalogs, project.getLogger());
44+
JAVA_MODULE_DEPENDENCIES, JavaModuleDependenciesExtension.class, versionCatalogs);
4345
javaModuleDependenciesExtension.getOwnModuleNamesPrefix().convention(
4446
project.provider(() -> project.getGroup().toString()));
45-
javaModuleDependenciesExtension.getWarnForMissingVersions().convention(true);
47+
javaModuleDependenciesExtension.getWarnForMissingVersions().convention(versionCatalogs != null);
4648
javaModuleDependenciesExtension.getVersionCatalogName().convention("libs");
4749

4850
SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class);
@@ -87,34 +89,49 @@ private void findAndReadModuleInfo(ModuleInfo.Directive moduleDirective, SourceS
8789
}
8890
}
8991

90-
private void declareDependency(String moduleName, Provider<RegularFile> moduleInfoFile, Project project, Configuration configuration, JavaModuleDependenciesExtension javaModuleDependenciesExtension) {
92+
private void declareDependency(String moduleName, Provider<RegularFile> moduleInfoFile, Project project, Configuration configuration, JavaModuleDependenciesExtension javaModuleDependencies) {
9193
if (JDKInfo.MODULES.contains(moduleName)) {
9294
// The module is part of the JDK, no dependency required
9395
return;
9496
}
9597

96-
String ownModuleNamesPrefix = javaModuleDependenciesExtension.getOwnModuleNamesPrefix().forUseAtConfigurationTime().get();
97-
String ga = javaModuleDependenciesExtension.ga(moduleName);
98-
String projectName = moduleName.startsWith(ownModuleNamesPrefix + ".") ? moduleName.substring(ownModuleNamesPrefix.length() + 1) : null;
98+
String ownModuleNamesPrefix = javaModuleDependencies.getOwnModuleNamesPrefix().forUseAtConfigurationTime().get();
99+
String ga = javaModuleDependencies.ga(moduleName);
100+
String projectName = moduleName.startsWith(ownModuleNamesPrefix + ".") ? moduleName.substring(ownModuleNamesPrefix.length() + 1) : null;
99101

100102
if (projectName != null) {
101103
project.getDependencies().add(
102104
configuration.getName(),
103105
project.project(":" + projectName)
104106
);
105107
} else if (ga != null) {
106-
project.getDependencies().add(
107-
configuration.getName(), javaModuleDependenciesExtension.gav(moduleName));
108+
Map<String, Object> gav = javaModuleDependencies.gav(moduleName);
109+
project.getDependencies().add(configuration.getName(), gav);
110+
if (!gav.containsKey("version")) {
111+
warnVersionMissing(moduleName, ga, moduleInfoFile, project, javaModuleDependencies);
112+
}
108113
} else {
109114
throw new RuntimeException("No mapping registered for module: " + moduleDebugInfo(moduleName, moduleInfoFile, project.getRootDir()) +
110115
" - use 'javaModuleDependencies.moduleNameToGA.put()' to add mapping.");
111116
}
112117
}
113118

114-
private String moduleDebugInfo(String moduleName, Provider<RegularFile> moduleInfo, File rootDir) {
119+
private void warnVersionMissing(String moduleName, String ga, Provider<RegularFile> moduleInfoFile, Project project, JavaModuleDependenciesExtension javaModuleDependencies) {
120+
if (warnForMissingCatalog) {
121+
project.getLogger().warn("[WARN] [Java Module Dependencies] Version catalog feature not enabled in settings.gradle(.kts) - add 'enableFeaturePreview(\"VERSION_CATALOGS\")'");
122+
warnForMissingCatalog = false;
123+
}
124+
125+
if (javaModuleDependencies.getWarnForMissingVersions().forUseAtConfigurationTime().get()) {
126+
project.getLogger().warn("[WARN] [Java Module Dependencies] No version defined in catalog - " + ga + " - "
127+
+ moduleDebugInfo(moduleName.replace('.', '_'), moduleInfoFile, project.getRootDir()));
128+
}
129+
}
130+
131+
private String moduleDebugInfo(String moduleName, Provider<RegularFile> moduleInfoFile, File rootDir) {
115132
return moduleName
116133
+ " (required in "
117-
+ moduleInfo.forUseAtConfigurationTime().get().getAsFile().getAbsolutePath().substring(rootDir.getAbsolutePath().length() + 1)
134+
+ moduleInfoFile.forUseAtConfigurationTime().get().getAsFile().getAbsolutePath().substring(rootDir.getAbsolutePath().length() + 1)
118135
+ ")";
119136
}
120137

0 commit comments

Comments
 (0)