Mercurial > public > develkit
diff fixivy.groovy @ 90:c207cdcaf13e
latest version
author | smith@nwoca.org |
---|---|
date | Tue, 21 Feb 2012 14:50:19 +0000 |
parents | 15f4da8bdbd3 |
children | 90325a10fe95 |
line wrap: on
line diff
--- a/fixivy.groovy Fri Feb 17 15:09:35 2012 +0000 +++ b/fixivy.groovy Tue Feb 21 14:50:19 2012 +0000 @@ -1,3 +1,12 @@ +/* + + This script is (was) used for 'fixing' early SSDT ivy.xml files created by NetBeans/ivyBeans. + It's primary goal is to migrate configurations from NetBeans conventions to Maven/Gradle conventions. + In order to accomplish this, it needs to correct dependencies, excludes and configurations. However, + it's not able to perfectly correct every ssdt project. Some parts of this script may be commented + out. Results of this script much be reviewed carefully before committing. +*/ + import groovy.xml.QName; import org.codehaus.groovy.runtime.InvokerHelper; @@ -11,7 +20,7 @@ import groovy.xml.* //args = [ '-r'] -println args +//println args ant = new AntBuilder() @@ -61,11 +70,24 @@ dep.@conf = 'compile-test->default(*)' } else if ( dep.@conf.text().contains('castor-ant') ) { dep.@conf = 'castor-ant->default(*)' - } - else { + } else if (dep.@conf.text() == 'runtime->default' ) { + // preserve + } else{ dep.attributes().remove('conf') } } + +// ensure(ivy.dependencies,["org.spockframework:spock-core:0.5-groovy-1.8"]) + +// ensure(ivy.dependencies, 'hibernate-validator', ['org.slf4j:slf4j-api:1.5.6','org.slf4j:slf4j-log4j12:1.5.6']) +// ensure(ivy.dependencies, 'usas.repository', ["org.springframework:org.springframework.test:3.0.5.RELEASE","org.codehaus.groovy:groovy-all:1.8.2"]) +// ensure(ivy.dependencies, 'usps.repository', ["org.springframework:org.springframework.test:3.0.5.RELEASE","org.codehaus.groovy:groovy-all:1.8.2"]) + + +// ensure(ivy.dependencies, 'spock-core', ["org.springframework:org.springframework.test:3.0.5.RELEASE"]) +// ensure(ivy.dependencies, 'org.springframework.test', ['org.junit:com.springsource.org.junit:4.9.0']) +// ensure(ivy.dependencies, 'org.springframework.test', ["org.spockframework:spock-spring:0.5-groovy-1.8"]) + // find groovy dependencies (or null) groovy = ivy.dependencies.children().find { it.@org == 'org.codehaus.groovy' && it.@name.text().startsWith('groovy') } @@ -97,32 +119,41 @@ } - - ensure(ivy.dependencies, 'hibernate-validator', ['org.slf4j:slf4j-api:1.5.6','org.slf4j:slf4j-log4j12:1.5.6']) - - ensure(ivy.dependencies, 'org.springframework.test', ['junit:junit:4.8.2']) +// resolveJunit(ivy.dependencies) // remove exclude for groovy-all ivy.dependencies.children().find { it.name() == 'exclude' && it.@module.text() == 'groovy-all' }.replaceNode {} + // remove exclude for commons logging + ivy.dependencies.children().find { it.name() == 'exclude' && it.@module.text() == 'com.springsource.org.apache.commons.logging' }.replaceNode {} // Add exclude for regular groovy: ensureExcluded(ivy.dependencies,"org.codehaus.groovy:groovy") // ensure modules covered by springsource are exluded; - ensureSpringSourceExcludes(ivy.dependencies) - - ensureConfiguration(ivy.dependencies,'org.springframework.test','compile-test') - - //remove bad junit dependencies and excludes - ivy.dependencies.children().find { it.@org == 'org.junit' && it.@module.text() == 'org.junit' }.replaceNode {} - ivy.dependencies.children().find { it.@org == 'org.junit' && it.@name.text() == 'org.junit' }.replaceNode {} - - - cfgs.children().each { it.@visibility = 'public' } // Should be 'private' after initial conversions. +// ensureSpringSourceExcludes(ivy.dependencies) +/* + ensureConfiguration(ivy.dependencies,'org.springframework.test','compile-test->*') + ensureConfiguration(ivy.dependencies,'com.springsource.org.junit','compile-test') + ensureConfiguration(ivy.dependencies,'spock-core','compile-test') + ensureConfiguration(ivy.dependencies,'spock-spring','compile-test') + ensureConfiguration(ivy.dependencies,'httpunit','compile-test->*') + ensureConfiguration(ivy.dependencies,'org.springframework.aspects','compile->*') + + // patch bad junit exludes + ivy.dependencies.children().findAll { + it.name() == 'exclude' && ("${it.@org}" == 'org.junit' || "${it.@module}" == 'org.junit' ) + }.each { + println "replacing ${it.name()} ${it.@org} ${it.@module} as junit:junit" + it.@org = 'junit' + it.@module = 'junit' + } +*/ + cfgs.children().each { it.@visibility = 'private' } // Should be 'private' after initial conversions. cfgs.children().find {it.@name == 'runtime' }.@extends = 'compile' cfgs.children().find {it.@name == 'compile-test' }.@extends = 'compile' cfgs.children().find {it.@name == 'runtime-test' }.@extends = 'runtime,compile-test' + cfgs.children().find {it.@name == 'runtime-test' }.@visibility = 'public' cfgs.children().find {it.@name == 'default' }.@visibility = 'public' cfgs.children().find {it.@name == 'default' }.@extends = 'runtime' @@ -140,17 +171,30 @@ //new File('ivy.xml').write( XmlUtil.serialize( outputBuilder.bind { mkp.yield ivy }).replaceAll('>','>')) def stringWriter = new StringWriter() - - + def node = new XmlParser().parseText( XmlUtil.serialize( outputBuilder.bind { mkp.yield ivy })) new MyNodePrinter(new IndentPrinter( new PrintWriter(stringWriter))).print(node) file.write(stringWriter.toString()) } +def resolveJunit(depends) { + + if (depends.children().any { it.@name == 'com.springsource.org.junit' } ) { + depends.children().findAll { "${it.@name}" == 'junit' || it.@module == 'junit' }.each { it.replaceNode {} } + } + + if (!depends.children().any { + def name = "${it.@name}" + name.contains ('junit') || name.contains('spock') } ) { + ensure(depends,["junit:junit:4.8.2"]) + depends.children().findAll { it.@module == 'junit' }.each { it.replaceNode {} } + } +} + def ensureConfiguration(depends,name,cfg) { depends.children().findAll { it.name() == 'dependency' && it.@name == name}.each { - it.@conf = "$cfg->default(*)" + it.@conf = cfg.contains('->') ? cfg : "$cfg->default(*)" } } @@ -179,13 +223,25 @@ } } +def ensure(depends,requires) { + + requires.each { + def (org,name,rev) = it.split(":") + if (!depends.children().any { it.@name == name } ) { + println " adding requirement $org:$name " + depends.children().findAll { it.name() == 'dependency' }.list().last() + { + dependency(name: name, org: org, rev: rev) + } + } + } +} + def ensureSpringSourceExcludes(depends) { - def exclusions = [] - depends.children().findAll { it.name() == 'dependency' && it.@name.text().startsWith('com.springsource.') }.each { - exclusions << "${it.@org}:${it.@name.text() - 'com.springsource.'}" - } - exclusions.each { ensureExcluded(depends,it) } - + + depends.children().findAll { it.name() == 'dependency' && it.@name.text().startsWith('com.springsource.') }.collect { + "${it.@org}:${it.@name.text() - 'com.springsource.'}" + }.each { ensureExcluded(depends,it) } + } /*