allprojects { task forgeOutput << { def indentLevel = 0 def outputFile = new File("$projectDir.path/forge-output.xml").newPrintWriter() def indent = { indentLevel.times { outputFile.print ' ' } } def output = { indent() outputFile.println it } def outputInc = { output it indentLevel++ } def outputDec = { indentLevel-- output it } def outputRelative = { file, to -> output file.absolutePath.substring(to.absolutePath.length() + 1).replace("\\", "/") } def outputDependency = { configName, d -> outputInc '' outputInc '' output d.name outputDec '' outputInc '' output d.group outputDec '' outputInc '' output d.version outputDec '' if (d instanceof ModuleDependency) { outputInc '' d.artifacts.each { outputInc '' outputInc '' output it.classifier != null ? it.classifier : '' outputDec '' outputInc '' output it.type outputDec '' outputDec '' } outputDec '' outputInc '' d.excludeRules.each { outputInc '' outputInc '' output it.group != null ? it.group : d.group outputDec'' outputInc '' output it.module outputDec '' outputDec '' } outputDec '' } outputInc '' output configName outputDec '' outputDec '' } def outputProject = { p -> outputInc '' outputInc '' output p.group outputDec '' outputInc '' output p.name outputDec '' outputInc '' output p.version outputDec '' outputInc '' output p.path outputDec '' outputInc '' output p.rootProject.projectDir outputDec '' def _assembleArchiveTask if (p.tasks.findByPath('assemble') != null) { assemble.taskDependencies.getDependencies(assemble).each { if (it.hasProperty('archiveName')) { _assembleArchiveTask = it } } } outputInc '' output _assembleArchiveTask != null ? _assembleArchiveTask.name : '' outputDec '' outputInc '' output _assembleArchiveTask != null ? "$buildDir.name/$libsDirName/$_assembleArchiveTask.archiveName" : '' outputDec '' outputInc '' output p.sourceCompatibility outputDec '' outputInc '' output p.targetCompatibility outputDec '' outputInc '' project.ext.properties.each { key, value -> if (key instanceof String && value instanceof String) { outputInc '' outputInc '' output key outputDec '' outputInc '' output value outputDec '' outputDec '' } } outputDec '' outputInc '' p.tasks.each { t -> outputInc '' outputInc '' output t.name outputDec '' outputInc '' t.taskDependencies.getDependencies(t).each { outputInc '' output it.name outputDec '' } outputDec '' outputDec '' } outputDec '' outputInc '' p.configurations.each { c -> c.allDependencies.each { d -> outputDependency(c.name, d) } } outputDec '' outputInc '' if (p.ext.has('_managedDependencies')) { p.ext._managedDependencies.each { groupName, configVersion -> def _notation = [ group: groupName.group, name: groupName.name, version: configVersion.version, classifier: configVersion.classifier, ext: configVersion.ext ] def d if (configVersion.closure != null) { d = p.dependencies.create(_notation, configVersion.closure) } else { d = p.dependencies.create(_notation) } outputDependency(configVersion.configuration, d) } } outputDec '' outputInc '' p.repositories.each { r -> outputInc '' outputInc '' output r.name outputDec '' outputInc '' output r.url outputDec '' outputDec '' } outputDec '' outputInc '' p.plugins.each { plugin -> outputInc '' outputInc '' output plugin.class.name outputDec '' outputDec '' } outputDec '' outputInc '' if (p.hasProperty('sourceSets')) { p.sourceSets.each { set -> outputInc '' outputInc '' output set.name outputDec '' outputInc '' set.java.srcDirs.each { outputInc '' outputRelative(it, project.projectDir) outputDec '' } outputDec '' outputInc '' set.resources.srcDirs.each { outputInc '' outputRelative(it, project.projectDir) outputDec '' } outputDec '' outputDec '' } } outputDec '' outputDec '' } outputInc '' outputProject project /* projectDir.eachFileMatch(groovy.io.FileType.FILES, { it.matches('^[a-zA-Z0-9]+-profile\\.gradle$') }, { outputInc '' outputInc '' output it.name.substring(0, it.name.indexOf('-')) outputDec '' project.configurations.each { it.allDependencies.clear() } project.plugins.clear() project.sourceSets.clear() project.repositories.clear() project.tasks.clear() project.ext.set('_managedDependencies', [:]) project.apply from: it outputProject project outputDec '' }) */ outputDec '' outputFile.close() } }