Skip to content

Commit 5e39e8b

Browse files
committed
fix(gradle): add compatibility for Gradle 3.2
The `canBeResolved` property was introduced in Gradle 3.3. This commit ensures compatibility with Gradle 3.2 by handling the MissingPropertyException when attempting to access this property.
1 parent ab0b4b4 commit 5e39e8b

File tree

1 file changed

+64
-62
lines changed

1 file changed

+64
-62
lines changed

module/gradle/print-dep.gradle

Lines changed: 64 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,72 @@
1-
def writeKey(java.io.Writer writer, String indent, boolean first, String k) {
2-
writer.write(indent)
3-
writer.write(first ? "- " : " ")
4-
writer.write(k)
5-
writer.write(":")
6-
}
7-
8-
def writeEntry(java.io.Writer writer, String indent, boolean first, String k, String v) {
9-
writeKey(writer, indent, first, k)
10-
writer.write(" \"")
11-
writer.write(v)
12-
writer.write("\"\n")
13-
}
1+
rootProject {
2+
tasks.create("generateDependencyFile") {
3+
doLast {
4+
def writeKey = { java.io.Writer writer, String indent, boolean first, String k ->
5+
writer.write(indent)
6+
writer.write(first ? "- " : " ")
7+
writer.write(k)
8+
writer.write(":")
9+
}
1410

15-
def writeDependencyTree(java.io.Writer writer, ResolvedDependency dependency, int depth, HashSet<Object> wrote) {
16-
final def indent = " ".repeat(depth * 2)
17-
writeEntry(writer, indent, true, "group", dependency.moduleGroup)
18-
writeEntry(writer, indent, false, "name", dependency.moduleName)
19-
writeEntry(writer, indent, false, "version", dependency.moduleVersion)
20-
final def children = dependency.children
21-
try {
22-
if (!children.isEmpty() && !wrote.contains(dependency)) {
23-
wrote.add(dependency)
24-
writeKey(writer, indent, false, "children")
25-
writer.write("\n")
26-
children.forEach { writeDependencyTree(writer, it, depth + 1, wrote) }
27-
}
28-
} finally {
29-
}
30-
}
11+
def writeEntry = { java.io.Writer writer, String indent, boolean first, String k, String v ->
12+
writeKey(writer, indent, first, k)
13+
writer.write(" \"")
14+
writer.write(v)
15+
writer.write("\"\n")
16+
}
3117

32-
def doProject(Project project) {
33-
final def logger = project.logger
34-
project.childProjects.values().forEach { doProject(it) }
35-
logger.info("Begin processing {}...", project)
36-
try {
37-
final def yamlFile = new File(project.buildDir, "dependency-tree-mp.yaml")
38-
logger.info(" file: {}", yamlFile)
39-
yamlFile.parentFile.mkdirs()
40-
final def writer = yamlFile.newWriter("utf-8")
41-
try {
42-
writer.write("project: \"${project.name}\"\n")
43-
writer.write("configurations:\n")
44-
for (final def configuration in project.configurations) {
45-
if (!configuration.canBeResolved) continue
46-
logger.info(" For {}", configuration)
47-
final def resolved = configuration.getResolvedConfiguration()
48-
writeEntry(writer, " ", true, "configuration", configuration.name)
49-
final def fld = resolved.firstLevelModuleDependencies
50-
if (!fld.isEmpty()) {
51-
writeKey(writer, " ", false, "dependencies")
52-
writer.write("\n")
53-
resolved.firstLevelModuleDependencies.forEach { writeDependencyTree(writer, it, 1, new HashSet()) }
18+
def writeDependencyTree
19+
writeDependencyTree = { java.io.Writer writer, ResolvedDependency dependency, int depth, HashSet<Object> wrote ->
20+
final def indentBuilder = new StringBuilder(depth * 2)
21+
for(int i = 0; i < depth*2; i++) indentBuilder.append(" ")
22+
final def indent = indentBuilder.toString()
23+
writeEntry(writer, indent, true, "group", dependency.moduleGroup)
24+
writeEntry(writer, indent, false, "name", dependency.moduleName)
25+
writeEntry(writer, indent, false, "version", dependency.moduleVersion)
26+
final def children = dependency.children
27+
try {
28+
if (!children.isEmpty() && !wrote.contains(dependency)) {
29+
wrote.add(dependency)
30+
writeKey(writer, indent, false, "children")
31+
writer.write("\n")
32+
children.forEach { writeDependencyTree(writer, it, depth + 1, wrote) }
33+
}
34+
} finally {
5435
}
5536
}
56-
} finally {
57-
writer.close()
58-
}
59-
60-
} finally {
61-
logger.info("End processing {}.", project)
62-
}
63-
}
37+
def doProject
38+
doProject = { Project project ->
39+
final def logger = project.logger
40+
project.childProjects.values().forEach { doProject(it) }
41+
logger.info("Begin processing {}...", project)
42+
try {
43+
final def yamlFile = new File(project.buildDir, "dependency-tree-mp.yaml")
44+
logger.info(" file: {}", yamlFile)
45+
yamlFile.parentFile.mkdirs()
46+
final def writer = yamlFile.newWriter("utf-8")
47+
try {
48+
writer.write("project: \"${project.name}\"\n")
49+
writer.write("configurations:\n")
50+
for (final def configuration in project.configurations) {
51+
try { if (!configuration.canBeResolved) continue }catch(MissingPropertyException ignored){}
52+
logger.info(" For {}", configuration)
53+
final def resolved = configuration.getResolvedConfiguration()
54+
writeEntry(writer, " ", true, "configuration", configuration.name)
55+
final def fld = resolved.firstLevelModuleDependencies
56+
if (!fld.isEmpty()) {
57+
writeKey(writer, " ", false, "dependencies")
58+
writer.write("\n")
59+
resolved.firstLevelModuleDependencies.forEach { writeDependencyTree(writer, it, 1, new HashSet()) }
60+
}
61+
}
62+
} finally {
63+
writer.close()
64+
}
6465

65-
rootProject {
66-
tasks.create("generateDependencyFile") {
67-
doLast {
66+
} finally {
67+
logger.info("End processing {}.", project)
68+
}
69+
}
6870
doProject(project)
6971
}
7072
}

0 commit comments

Comments
 (0)