Skip to content

Commit

Permalink
fix(gradle): add compatibility for Gradle 3.2
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
iseki0 committed Dec 31, 2024
1 parent ab0b4b4 commit 5e39e8b
Showing 1 changed file with 64 additions and 62 deletions.
126 changes: 64 additions & 62 deletions module/gradle/print-dep.gradle
Original file line number Diff line number Diff line change
@@ -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<Object> 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<Object> 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)
}
}
Expand Down

0 comments on commit 5e39e8b

Please sign in to comment.