From 5e39e8b8039b9a86eccce1eb8dc530b5c8ca02a4 Mon Sep 17 00:00:00 2001 From: iseki Date: Tue, 31 Dec 2024 12:06:18 +0800 Subject: [PATCH] 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. --- module/gradle/print-dep.gradle | 126 +++++++++++++++++---------------- 1 file changed, 64 insertions(+), 62 deletions(-) diff --git a/module/gradle/print-dep.gradle b/module/gradle/print-dep.gradle index bfe891bc..fadf4e57 100644 --- a/module/gradle/print-dep.gradle +++ b/module/gradle/print-dep.gradle @@ -1,70 +1,72 @@ -def writeKey(java.io.Writer writer, String indent, boolean first, String k) { - writer.write(indent) - writer.write(first ? "- " : " ") - writer.write(k) - writer.write(":") -} - -def writeEntry(java.io.Writer writer, String indent, boolean first, String k, String v) { - writeKey(writer, indent, first, k) - writer.write(" \"") - writer.write(v) - writer.write("\"\n") -} +rootProject { + tasks.create("generateDependencyFile") { + doLast { + def writeKey = { java.io.Writer writer, String indent, boolean first, String k -> + writer.write(indent) + writer.write(first ? "- " : " ") + writer.write(k) + writer.write(":") + } -def writeDependencyTree(java.io.Writer writer, ResolvedDependency dependency, int depth, HashSet wrote) { - final def indent = " ".repeat(depth * 2) - writeEntry(writer, indent, true, "group", dependency.moduleGroup) - writeEntry(writer, indent, false, "name", dependency.moduleName) - writeEntry(writer, indent, false, "version", dependency.moduleVersion) - final def children = dependency.children - try { - if (!children.isEmpty() && !wrote.contains(dependency)) { - wrote.add(dependency) - writeKey(writer, indent, false, "children") - writer.write("\n") - children.forEach { writeDependencyTree(writer, it, depth + 1, wrote) } - } - } finally { - } -} + def writeEntry = { java.io.Writer writer, String indent, boolean first, String k, String v -> + writeKey(writer, indent, first, k) + writer.write(" \"") + writer.write(v) + writer.write("\"\n") + } -def doProject(Project project) { - final def logger = project.logger - project.childProjects.values().forEach { doProject(it) } - logger.info("Begin processing {}...", project) - try { - final def yamlFile = new File(project.buildDir, "dependency-tree-mp.yaml") - logger.info(" file: {}", yamlFile) - yamlFile.parentFile.mkdirs() - final def writer = yamlFile.newWriter("utf-8") - try { - writer.write("project: \"${project.name}\"\n") - writer.write("configurations:\n") - for (final def configuration in project.configurations) { - if (!configuration.canBeResolved) continue - logger.info(" For {}", configuration) - final def resolved = configuration.getResolvedConfiguration() - writeEntry(writer, " ", true, "configuration", configuration.name) - final def fld = resolved.firstLevelModuleDependencies - if (!fld.isEmpty()) { - writeKey(writer, " ", false, "dependencies") - writer.write("\n") - resolved.firstLevelModuleDependencies.forEach { writeDependencyTree(writer, it, 1, new HashSet()) } + def writeDependencyTree + writeDependencyTree = { java.io.Writer writer, ResolvedDependency dependency, int depth, HashSet wrote -> + final def indentBuilder = new StringBuilder(depth * 2) + for(int i = 0; i < depth*2; i++) indentBuilder.append(" ") + final def indent = indentBuilder.toString() + writeEntry(writer, indent, true, "group", dependency.moduleGroup) + writeEntry(writer, indent, false, "name", dependency.moduleName) + writeEntry(writer, indent, false, "version", dependency.moduleVersion) + final def children = dependency.children + try { + if (!children.isEmpty() && !wrote.contains(dependency)) { + wrote.add(dependency) + writeKey(writer, indent, false, "children") + writer.write("\n") + children.forEach { writeDependencyTree(writer, it, depth + 1, wrote) } + } + } finally { } } - } finally { - writer.close() - } - - } finally { - logger.info("End processing {}.", project) - } -} + def doProject + doProject = { Project project -> + final def logger = project.logger + project.childProjects.values().forEach { doProject(it) } + logger.info("Begin processing {}...", project) + try { + final def yamlFile = new File(project.buildDir, "dependency-tree-mp.yaml") + logger.info(" file: {}", yamlFile) + yamlFile.parentFile.mkdirs() + final def writer = yamlFile.newWriter("utf-8") + try { + writer.write("project: \"${project.name}\"\n") + writer.write("configurations:\n") + for (final def configuration in project.configurations) { + try { if (!configuration.canBeResolved) continue }catch(MissingPropertyException ignored){} + logger.info(" For {}", configuration) + final def resolved = configuration.getResolvedConfiguration() + writeEntry(writer, " ", true, "configuration", configuration.name) + final def fld = resolved.firstLevelModuleDependencies + if (!fld.isEmpty()) { + writeKey(writer, " ", false, "dependencies") + writer.write("\n") + resolved.firstLevelModuleDependencies.forEach { writeDependencyTree(writer, it, 1, new HashSet()) } + } + } + } finally { + writer.close() + } -rootProject { - tasks.create("generateDependencyFile") { - doLast { + } finally { + logger.info("End processing {}.", project) + } + } doProject(project) } }