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()
}
}