Skip to content

Commit 88ed065

Browse files
committed
Fix issue that causes new utility tasks to fail task configuration
1 parent 431cbbe commit 88ed065

File tree

6 files changed

+73
-14
lines changed

6 files changed

+73
-14
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Java Module Dependencies Gradle Plugin - Changelog
22

3+
## Version 1.6.1
4+
* Fix in setup of new utility tasks
5+
36
## Version 1.6
47
* Add more utility tasks to migrate from/to module-info based dependencies
58
* Additional notation for module version DSL

src/main/java/org/gradlex/javamodule/dependencies/JavaModuleDependenciesPlugin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ private List<BuildFileDependenciesGenerate.DependencyDeclaration> collectDepende
293293
}
294294
}
295295
return moduleInfo.get(directive).stream()
296-
.map(moduleName -> new BuildFileDependenciesGenerate.DependencyDeclaration(scope, moduleName, javaModuleDependencies.ga(moduleName).get()))
296+
.map(moduleName -> new BuildFileDependenciesGenerate.DependencyDeclaration(scope, moduleName, javaModuleDependencies.ga(moduleName)))
297297
.collect(Collectors.toList());
298298
}
299299

src/main/java/org/gradlex/javamodule/dependencies/JavaModuleVersionsPlugin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,11 @@ private void registerCatalogTask(Project project) {
128128
}
129129

130130
private List<CatalogGenerate.CatalogEntry> collectCatalogEntriesFromVersions(JavaModuleDependenciesExtension javaModuleDependencies, ModuleVersions moduleVersions) {
131-
return moduleVersions.getDeclaredVersions().entrySet().stream().map(mv -> new CatalogGenerate.CatalogEntry(mv.getKey(), javaModuleDependencies.ga(mv.getKey()).get(), mv.getValue())).collect(Collectors.toList());
131+
return moduleVersions.getDeclaredVersions().entrySet().stream().map(mv -> new CatalogGenerate.CatalogEntry(mv.getKey(), javaModuleDependencies.ga(mv.getKey()), mv.getValue())).collect(Collectors.toList());
132132
}
133133

134134
private List<CatalogGenerate.CatalogEntry> collectCatalogEntriesFromModuleInfos(JavaModuleDependenciesExtension javaModuleDependencies, List<String> moduleNames) {
135-
return moduleNames.stream().map(moduleName -> new CatalogGenerate.CatalogEntry(moduleName, javaModuleDependencies.ga(moduleName).get(), null)).collect(Collectors.toList());
135+
return moduleNames.stream().map(moduleName -> new CatalogGenerate.CatalogEntry(moduleName, javaModuleDependencies.ga(moduleName), null)).collect(Collectors.toList());
136136
}
137137

138138
}

src/main/java/org/gradlex/javamodule/dependencies/tasks/BuildFileDependenciesGenerate.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.gradle.api.model.ObjectFactory;
2222
import org.gradle.api.provider.ListProperty;
2323
import org.gradle.api.provider.Property;
24+
import org.gradle.api.provider.Provider;
2425
import org.gradle.api.tasks.Internal;
2526
import org.gradle.api.tasks.TaskAction;
2627

@@ -65,9 +66,9 @@ && getCompileOnlyDependencies().get().isEmpty()
6566
public static class DependencyDeclaration {
6667
private final String scope;
6768
private final String moduleName;
68-
private final String fullId;
69+
private final Provider<String> fullId;
6970

70-
public DependencyDeclaration(String scope, String moduleName, String fullId) {
71+
public DependencyDeclaration(String scope, String moduleName, Provider<String> fullId) {
7172
this.scope = scope;
7273
this.moduleName = moduleName;
7374
this.fullId = fullId;
@@ -113,7 +114,7 @@ public void generate() throws IOException {
113114
content.add("");
114115
}
115116

116-
if (!getDependencies().get().isEmpty()) {
117+
if (!getDependencies().get().stream().allMatch(SourceSetDependencies::isEmpty)) {
117118
content.add("dependencies {");
118119
getDependencies().get().stream().sorted((a, b) -> ("main".equals(a.name)) ? -1 : a.name.compareTo(b.name)).forEach(sourceSetBlock -> {
119120
content.addAll(toDeclarationString(sourceSetBlock.getApiDependencies()));
@@ -134,8 +135,8 @@ public void generate() throws IOException {
134135

135136
private List<String> toDeclarationString(ListProperty<DependencyDeclaration> dependencies) {
136137
return dependencies.get().stream().map(d -> {
137-
String group = d.fullId.split(":")[0];
138-
String artifact = d.fullId.split(":")[1];
138+
String group = d.fullId.get().split(":")[0];
139+
String artifact = d.fullId.get().split(":")[1];
139140
String feature = null;
140141
if (artifact.contains("|")) {
141142
feature = artifact.split("\\|")[1];
@@ -145,7 +146,7 @@ private List<String> toDeclarationString(ListProperty<DependencyDeclaration> dep
145146
String identifier;
146147
if (group.equals(getOwnProjectGroup().get())) {
147148
if (getWithCatalog().get()) {
148-
identifier = "projects." + artifact;
149+
identifier = "projects." + toCamelCase(artifact);
149150
} else {
150151
identifier = "project(\":" + artifact + "\")";
151152
}
@@ -164,4 +165,19 @@ private List<String> toDeclarationString(ListProperty<DependencyDeclaration> dep
164165
}
165166
}).collect(Collectors.toList());
166167
}
168+
169+
private String toCamelCase(String s) {
170+
String[] segments = s.split("[\\W_]+");
171+
StringBuilder builder = new StringBuilder();
172+
for (int i = 0; i < segments.length; i++) {
173+
String word = segments[i];
174+
if (i == 0) {
175+
word = word.isEmpty() ? word : word.toLowerCase();
176+
} else {
177+
word = word.isEmpty() ? word : Character.toUpperCase(word.charAt(0)) + word.substring(1).toLowerCase();
178+
}
179+
builder.append(word);
180+
}
181+
return builder.toString();
182+
}
167183
}

src/main/java/org/gradlex/javamodule/dependencies/tasks/CatalogGenerate.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.gradle.api.file.RegularFileProperty;
2121
import org.gradle.api.provider.ListProperty;
2222
import org.gradle.api.provider.Property;
23+
import org.gradle.api.provider.Provider;
2324
import org.gradle.api.provider.SetProperty;
2425
import org.gradle.api.tasks.Internal;
2526
import org.gradle.api.tasks.TaskAction;
@@ -38,10 +39,10 @@ public abstract class CatalogGenerate extends DefaultTask {
3839

3940
public static class CatalogEntry implements Comparator<CatalogEntry> {
4041
private final String moduleName;
41-
private final String fullId;
42+
private final Provider<String> fullId;
4243
private final String version;
4344

44-
public CatalogEntry(String moduleName, String fullId, @Nullable String version) {
45+
public CatalogEntry(String moduleName, Provider<String> fullId, @Nullable String version) {
4546
this.moduleName = moduleName;
4647
this.fullId = fullId;
4748
this.version = version;
@@ -90,15 +91,15 @@ public void generate() throws IOException {
9091

9192
@Nullable
9293
private String toDeclarationString(CatalogEntry entry) {
93-
String group = entry.fullId.split(":")[0];
94+
String group = entry.fullId.get().split(":")[0];
9495
if (group.equals(getOwnProjectGroup().get())) {
9596
return null;
9697
}
9798
String notation;
9899
if (entry.version == null) {
99-
notation = "{ module = \"" + entry.fullId + "\" }";
100+
notation = "{ module = \"" + entry.fullId.get() + "\" }";
100101
} else {
101-
notation = "{ module = \"" + entry.fullId + "\", version = \"" + entry.version + "\" }";
102+
notation = "{ module = \"" + entry.fullId.get() + "\", version = \"" + entry.version + "\" }";
102103
}
103104
return entry.moduleName.replace('.', '-') + " = " + notation;
104105
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package org.gradlex.javamodule.dependencies.test
2+
3+
import org.gradlex.javamodule.dependencies.test.fixture.GradleBuild
4+
import spock.lang.Specification
5+
6+
class BasicFunctionalityTest extends Specification {
7+
8+
@Delegate
9+
GradleBuild build = new GradleBuild()
10+
11+
def "can configure all tasks in a build without error"() {
12+
given:
13+
libModuleInfoFile << 'module abc.lib { }'
14+
appModuleInfoFile << '''
15+
module org.gradlex.test.app {
16+
requires abc.lib;
17+
}
18+
'''
19+
20+
when:
21+
def result = runner('tasks').build()
22+
23+
then:
24+
result.output.contains('''
25+
Java modules tasks
26+
------------------
27+
checkModuleInfo - Check order of directives in 'module-info.java' in 'main' source set
28+
checkTestFixturesModuleInfo - Check order of directives in 'module-info.java' in 'testFixtures' source set
29+
checkTestModuleInfo - Check order of directives in 'module-info.java' in 'test' source set
30+
generateAllModuleInfoFiles - Generate 'module-info.java' files in all source sets
31+
generateBuildFileDependencies - Generate 'dependencies' block in 'build.gradle.kts'
32+
generateCatalog - Generate 'libs.versions.toml' file
33+
generateModuleInfoFile - Generate 'module-info.java' in 'main' source set
34+
generateTestFixturesModuleInfoFile - Generate 'module-info.java' in 'testFixtures' source set
35+
generateTestModuleInfoFile - Generate 'module-info.java' in 'test' source set'''.stripIndent()
36+
)
37+
}
38+
39+
}

0 commit comments

Comments
 (0)