Skip to content

Instantly share code, notes, and snippets.

@eed3si9n
Created June 16, 2011 06:06
Show Gist options
  • Save eed3si9n/1028764 to your computer and use it in GitHub Desktop.
Save eed3si9n/1028764 to your computer and use it in GitHub Desktop.
maven model parsing
  1. maven-4.0.0.xsd をどっかにダウンロード。
    $ scalaxb maven-4.0.0.xsd -p maven
  1. main.scala を加える。

     object Main extends App {
       args.headOption map { arg =>
         println(scalaxb.fromXML[maven.Model](xml.XML.load(arg)))
       }
     }
    
  2. コンパイル

     $ scalac *.scala
    
  3. 実行

     $ scala Main ../../scalaxb/mvn-scalaxb/pom.xml
    
     Model(Map(modelVersion -> DataRecord({http://maven.apache.org/POM/4.0.0}modelVersion,4.0.0), groupId -> DataRecord({http://maven.apache.org/POM/4.0.0}groupId,org.scalaxb), artifactId -> DataRecord({http://maven.apache.org/POM/4.0.0}artifactId,scalaxb-maven-plugin), packaging -> DataRecord({http://maven.apache.org/POM/4.0.0}packaging,maven-plugin), name -> DataRecord({http://maven.apache.org/POM/4.0.0}name,scalaxb Maven Plugin), version -> DataRecord({http://maven.apache.org/POM/4.0.0}version,0.6.1-SNAPSHOT), scm -> DataRecord({http://maven.apache.org/POM/4.0.0}scm,Scm(Some(scm:git:git://github.com/eed3si9n/scalaxb.git),Some(scm:git:[email protected]:eed3si9n/scalaxb.git),None,Some(https://github.com/mart/scalaxb))), build -> DataRecord({http://maven.apache.org/POM/4.0.0}build,Build(None,None,None,None,None,None,None,None,None,None,None,None,Some(PluginManagement(Some(Plugins3(List(Plugin(Some(org.apache.maven.plugins),Some(maven-release-plugin),Some(2.2-SNAPSHOT),None,None,None,None,None,Some(Configuration3(List())))))))),Some(Plugins4(List(Plugin(Some(org.apache.maven.plugins),Some(maven-plugin-plugin),Some(2.5.1),None,Some(Executions(List(PluginExecution(Some(generated-helpmojo),None,Some(Goals2(List(helpmojo))),None,None)))),None,None,None,Some(Configuration3(List())))))))), profiles -> DataRecord({http://maven.apache.org/POM/4.0.0}profiles,Profiles(List(Profile(Some(it),None,Some(BuildBase(None,None,None,None,None,None,None,Some(Plugins2(List(Plugin(Some(org.apache.maven.plugins),Some(maven-invoker-plugin),Some(1.5),None,Some(Executions(List(PluginExecution(Some(integration-test),None,Some(Goals2(List(install, run))),None,None)))),None,None,None,Some(Configuration3(List())))))))),None,None,None,None,None,None,None,None,None)))), dependencies -> DataRecord({http://maven.apache.org/POM/4.0.0}dependencies,Dependencies(List(Dependency(Some(org.scalaxb),Some(scalaxb_${scala.version}),Some(0.6.0),None,None,None,None,None,None), Dependency(Some(org.apache.maven),Some(maven-plugin-api),Some(${maven.version}),None,None,None,None,None,None), Dependency(Some(org.apache.maven),Some(maven-project),Some(${maven.version}),None,None,None,None,Some(Exclusions(List(Exclusion(Some(maven-artifact),Some(org.apache.maven)), Exclusion(Some(maven-artifact-manager),Some(org.apache.maven)), Exclusion(Some(maven-model),Some(org.apache.maven)), Exclusion(Some(maven-plugin-registry),Some(org.apache.maven)), Exclusion(Some(maven-profile),Some(org.apache.maven)), Exclusion(Some(maven-settings),Some(org.apache.maven)), Exclusion(Some(plexus-container-default),Some(org.codehaus.plexus))))),None), Dependency(Some(junit),Some(junit),Some(${junit.version}),None,None,Some(test),None,None,None)))), distributionManagement -> DataRecord({http://maven.apache.org/POM/4.0.0}distributionManagement,DistributionManagement(Some(DeploymentRepository(None,Some(scala-tools),None,Some(http://nexus.scala-tools.org/content/repositories/releases/),None)),Some(DeploymentRepository(None,Some(scala-tools),None,Some(http://nexus.scala-tools.org/content/repositories/snapshots/),None)),None,None,None,None)), properties -> DataRecord({http://maven.apache.org/POM/4.0.0}properties,Properties(List()))))
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment