xml parsing - Read specific content of POM xml file through groovy xmlSurper and download dependecy -
i have below pom file.i want use xmlslurper groovy code read specific content of pom file can tell me how write code read specific content through groovy xmlslurper.i want read groupid artifact id,classifier , type of scope runtime in below pom file.
<?xml version="1.0" encoding="utf-8"?> <project xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <modelversion>4.0.0</modelversion> <groupid>com.ss.engine</groupid> <artifactid>nti</artifactid> <version>4.0.0.110</version> <description>configuration management gradle plugin</description> <dependencies> <dependency> <groupid>com.ss.engine</groupid> <artifactid>license</artifactid> <version>4.0.0.5000</version> <scope>compile</scope> </dependency> <dependency> <groupid>com.as.engine</groupid> <artifactid>commoncore</artifactid> <version>4.0.0.100</version> <scope>compile</scope> </dependency> <dependency> <groupid>com.as.engine</groupid> <artifactid>ncdes</artifactid> <version>4.0.0.97</version> <scope>compile</scope> </dependency> <dependency> <groupid>ch.qos.logback</groupid> <artifactid>logback-core</artifactid> <version>1.1.1</version> <scope>compile</scope> </dependency> <dependency> <groupid>org.codehaus.jackson</groupid> <artifactid>jackson-mapper-asl</artifactid> <version>1.9.5</version> <scope>compile</scope> </dependency> <dependency> <groupid>com.as.enginee</groupid> <artifactid>kgfhs</artifactid> <version>4.0.0.137</version> <scope>compile</scope> </dependency> <dependency> <groupid>com.operasolutions</groupid> <artifactid>risk</artifactid> <version>1.1</version> <scope>compile</scope> </dependency> <dependency> <groupid>org.codehaus.mojo</groupid> <artifactid>properties-maven-plugin</artifactid> <version>1.0-alpha-2</version> <scope>compile</scope> </dependency> <dependency> <groupid>net.sf.supercsv</groupid> <artifactid>super-csv</artifactid> <version>2.1.0</version> <scope>compile</scope> </dependency> <dependency> <groupid>com.jamonapi</groupid> <artifactid>jamon</artifactid> <version>2.4</version> <scope>compile</scope> </dependency> <dependency> <groupid>ch.qos.logback</groupid> <artifactid>logback-classic</artifactid> <version>1.1.1</version> <scope>compile</scope> </dependency> <dependency> <groupid>com.as.engine</groupid> <artifactid>les</artifactid> <version>0.0.3</version> <type>zip</type> <classifier>linux</classifier> <scope>runtime</scope> </dependency> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupid>commons-configuration</groupid> <artifactid>commons-configuration</artifactid> <version>1.10</version> <scope>compile</scope> </dependency> <dependency> <groupid>args4j</groupid> <artifactid>args4j</artifactid> <version>2.0.28</version> <scope>compile</scope> </dependency> <dependency> <groupid>net.sf.supercsv</groupid> <artifactid>super-csv-dozer</artifactid> <version>2.1.0</version> <scope>compile</scope> </dependency> </dependencies> </project>
below script using read contents of pom file , download dependency scope runtime artifactory.
apply plugin: 'java' // ------ tell script dependencies artifactory ------ repositories { maven { url "http://abc.de.fg:80/artifactory/fes-release-local" } } buildscript { repositories { maven { url "http://abc.de.fg:80/artifactory/libs-snapshot" } } // ------ tell script dependencies artifactory ------ dependencies { classpath ([ "cop.trn.cm:cmugin:1.2.147" ]) } } apply plugin: 'com.uven.eplugin' /** * folloing -d parameters required run task * - deploylayer = 1 of acceptance, latest, production, test */ //------------------------------------------------------------------------------------------ // read properties file , take value per environment. // //------------------------------------------------------------------------------------------ if(!system.properties.deploylayer) throw new exception ("deploylayer must set") def thepropfile = file("config/${system.properties.deploylayer}.properties") if(!thepropfile.exists()) throw new exception("cannot load specified environment properties ${thepropfile}") println "deploying ${system.properties.jobname}.${system.properties.buildnumber} ${system.properties.deploylayer}" // load deploy properties file def deployproperties = new properties() thepropfile.withinputstream { stream -> deployproperties.load(stream) } // set them in build environment project.ext { deployprops = deployproperties deployroot = deployproperties["${system.properties.jobname}.deployroot"] deploydir = deployproperties["${system.properties.jobname}.deploydir"] deployfolder = deployproperties["${system.properties.jobname}.foldername"] deploypostinstallsteps = deployproperties["${system.properties.jobname}.postinstallsteps"] } task deletegraphicsassets(type: delete, dependson: deploy) { def dirname = "${deployroot}" delete dirname dolast { file(dirname).mkdirs() } } task downloaddependecies(dependson: deletegraphicsassets) << { def pomfile = file("${builddir}/artifacts").listfiles().find { it.name.endswith 'pom' } def pomxml = new xmlslurper().parse(pomfile.absolutepath) def pomdependencies = pomxml.dependencies.dependency configuration configuration = project.configurations.detachedconfiguration() configuration.transitive = false pomdependencies.each { dependency -> if(dependency.scope == 'runtime') { def dependencyspec = dependencies.create("${dependency.groupid}:${dependency.artifactid}:${dependency.version}:${dependency.classifier}@${dependency.type}") println "found runtime dependency: ${dependencyspec}" configuration.dependencies.add(dependencyspec) } } println "resolved following" configuration.resolvedconfiguration.firstlevelmoduledependencies.each { println } copy { configuration ( "${builddir}/artifacts" ) } } task copyartifactzip << { copy { "${deployroot}" "${deploydir}/" } } task copylicensezip << { copy { "${deployroot}" "${deploydir}/${deployfolder}" } } task mycustomtask(dependson: downloaddependecies) << { copy { 'deploymentfiles' "${deployroot}" } } task unzipartifact(dependson: mycustomtask) << { def thezip = file("${builddir}/artifacts").listfiles().find { it.name.endswith('.zip') } println "unzipping ${thezip} artifact to: ${deployroot}" ant.unzip(src: thezip, dest: "${deployroot}", overwrite: true) } task setperms(type:exec, dependson: unzipartifact) { workingdir "${deployroot}" executable "bash" args "-c", "chmod -fr 755 *" } def dirname = "${deploydir}/${deployfolder}" task zipdeployment(type: gradlebuild, dependson: setperms) { gradlebuild gbuild -> def env = system.getenv() def jobname=env['jobname'] if (jobname.equals("licensegenerator")) { delete dirname file(dirname).mkdirs() gbuild.tasks = ['copylicensezip'] } else { gbuild.tasks = ['copyartifactzip'] } } task deployall(dependson: zipdeployment){}
Comments
Post a Comment