You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2008/11/12 21:34:07 UTC

svn commit: r713499 - in /maven/mercury/trunk/mercury-maven: ./ mercury-compare-maven-plugin/ mercury-compare-maven-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/maven/ mercury-compare-mdo/ mercury-compare-mdo/src/ mercury-compare-mdo...

Author: ogusakov
Date: Wed Nov 12 12:34:05 2008
New Revision: 713499

URL: http://svn.apache.org/viewvc?rev=713499&view=rev
Log:
adding comparisson tools - still experimental

Added:
    maven/mercury/trunk/mercury-maven/list.txt
    maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/s.xml
    maven/mercury/trunk/mercury-maven/mercury-compare-mdo/   (with props)
    maven/mercury/trunk/mercury-maven/mercury-compare-mdo/pom.xml
    maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/
    maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/
    maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/
    maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/
    maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/
    maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/
    maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/mercury/
    maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/mercury/compare/
    maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/mercury/compare/DataBuilder.java
    maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/mercury/compare/DataException.java
    maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/mercury/compare/IDepResolver.java
    maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/mdo/
    maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/mdo/compare.mdo
    maven/mercury/trunk/mercury-maven/mercury-compare-mercury/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryResolve.java   (contents, props changed)
      - copied, changed from r712960, maven/mercury/trunk/mercury-maven/mercury-compare-mercury/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryCompareMojo.java
    maven/mercury/trunk/mercury-maven/repositories.properties
Removed:
    maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/list.txt
Modified:
    maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/c
    maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/pom.xml
    maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/maven/MercuryDepsMojo.java
    maven/mercury/trunk/mercury-maven/mercury-compare-mercury/pom.xml

Added: maven/mercury/trunk/mercury-maven/list.txt
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/list.txt?rev=713499&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-maven/list.txt (added)
+++ maven/mercury/trunk/mercury-maven/list.txt Wed Nov 12 12:34:05 2008
@@ -0,0 +1,29 @@
+asm:asm-xml:3.0
+org.apache.maven.plugins:maven-antrun-plugin:1.2
+org.apache.maven.plugins:maven-archetypeng-plugin:2.0
+org.apache.maven.plugins:maven-assembly-plugin:2.1
+org.apache.maven.plugins:maven-changelog-plugin:2.1
+org.apache.maven.plugins:maven-checkstyle-plugin:2.1
+org.apache.maven.plugins:maven-clean-plugin:2.2
+org.apache.maven.plugins:maven-compiler-plugin:2.0.2
+org.apache.maven.plugins:maven-dependency-plugin:2.0
+org.apache.maven.plugins:maven-deploy-plugin:2.4
+org.apache.maven.plugins:maven-ear-plugin:2.3.1
+org.apache.maven.plugins:maven-eclipse-plugin:2.4
+org.apache.maven.plugins:maven-ejb-plugin:2.1
+org.apache.maven.plugins:maven-help-plugin:2.0.2
+org.apache.maven.plugins:maven-install-plugin:2.2
+org.apache.maven.plugins:maven-jar-plugin:2.2
+org.apache.maven.plugins:maven-javadoc-plugin:2.4
+org.apache.maven.plugins:maven-jxr-plugin:2.1
+org.apache.maven.plugins:maven-plugin-parent:2.0.1
+org.apache.maven.plugins:maven-plugin-plugin:2.4.3
+org.apache.maven.plugins:maven-pmd-plugin:2.4
+org.apache.maven.plugins:maven-project-info-reports-plugin:2.0.1
+org.apache.maven.plugins:maven-rar-plugin:2.2
+org.apache.maven.plugins:maven-remote-resources-plugin:1.0
+org.apache.maven.plugins:maven-resources-plugin:2.3
+org.apache.maven.plugins:maven-shade-plugin:1.1
+org.apache.maven.plugins:maven-source-plugin:2.0.4
+org.apache.maven.plugins:maven-surefire-plugin:2.4.3
+org.apache.maven.plugins:maven-surefire-report-plugin:2.4.3

Modified: maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/c
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/c?rev=713499&r1=713498&r2=713499&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/c (original)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/c Wed Nov 12 12:34:05 2008
@@ -1 +1 @@
-mvn org.sonatype.maven.plugins:mercury-compare-maven-plugin:1.0:deps -DtargetDir=target/deps -DlistFile=list.txt
+mvn -s s.xml org.sonatype.maven.plugins:mercury-compare-maven-plugin:1.0:deps -DtargetDir=../deps -DlistFile=../list.txt -DlocalRepo=../localRepoMaven

Modified: maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/pom.xml?rev=713499&r1=713498&r2=713499&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/pom.xml (original)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/pom.xml Wed Nov 12 12:34:05 2008
@@ -54,6 +54,12 @@
     </dependency>
 
     <dependency>
+      <groupId>org.apache.maven.mercury</groupId>
+      <artifactId>mercury-compare-mdo</artifactId>
+      <version>${mercury.version}</version>
+    </dependency>
+
+    <dependency>
     	<groupId>org.mortbay.jetty</groupId>
     	<artifactId>jetty-maven-plugin</artifactId>
     	<version>7.0.0.pre5</version>

Added: maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/s.xml
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/s.xml?rev=713499&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/s.xml (added)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/s.xml Wed Nov 12 12:34:05 2008
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<settings>
+
+  <localRepository>/app/src/asf/maven/mercury/trunk/mercury-maven/localRepoMaven</localRepository>
+
+<profiles>
+
+        <profile>
+            <id>standard</id>
+            <repositories>
+ 
+                <repository>
+                    <id>maven.central</id>
+                    <url>http://repo1.maven.org/maven2</url>
+                    <snapshots><enabled>false</enabled></snapshots>
+                    <releases><enabled>true</enabled></releases>
+                </repository>
+<!-- 
+                <repository>
+                    <id>sona.central</id>
+                    <url>http://repository.sonatype.org/content/groups/public</url>
+                    <snapshots><enabled>true</enabled></snapshots>
+                    <releases><enabled>true</enabled></releases>
+                </repository>
+                <repository>
+                    <id>codehaus.snapshots</id>
+                    <url>http://snapshots.repository.codehaus.org</url>
+                    <snapshots><enabled>true</enabled></snapshots>
+                    <releases><enabled>false</enabled></releases>
+                </repository>
+                <repository>
+                    <id>apache.snapshots</id>
+                    <url>http://people.apache.org/repo/m2-snapshot-repository</url>
+                    <snapshots><enabled>true</enabled></snapshots>
+                    <releases><enabled>false</enabled></releases>
+                </repository>
+                <repository>
+                    <id>codehaus.releases</id>
+                    <url>http://repository.codehaus.org</url>
+                    <snapshots><enabled>false</enabled></snapshots>
+                    <releases><enabled>true</enabled></releases>
+                </repository>
+  -->
+            </repositories>
+            
+            <pluginRepositories>
+                <pluginRepository>
+                    <id>sona.central</id>
+		                <url>http://repository.sonatype.org/content/groups/public</url>
+                    <snapshots><enabled>true</enabled></snapshots>
+                    <releases><enabled>true</enabled></releases>
+                </pluginRepository>
+            </pluginRepositories>
+        </profile>
+  
+</profiles>
+  
+  <activeProfiles>
+	  <activeProfile>standard</activeProfile>
+  </activeProfiles>
+
+  <pluginGroups>
+    <pluginGroup>org.sid.maven.plugins</pluginGroup>
+    <pluginGroup>org.mortbay.jetty</pluginGroup>
+    <pluginGroup>org.codehaus.mojo</pluginGroup>
+    <pluginGroup>org.sonatype.maven.plugins</pluginGroup>
+  </pluginGroups>
+
+</settings>

Modified: maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/maven/MercuryDepsMojo.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/maven/MercuryDepsMojo.java?rev=713499&r1=713498&r2=713499&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/maven/MercuryDepsMojo.java (original)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/maven/MercuryDepsMojo.java Wed Nov 12 12:34:05 2008
@@ -1,33 +1,31 @@
 package org.sonatype.maven.plugins.mercury.compare.maven;
 
-import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
-import java.io.FileReader;
 import java.io.FileWriter;
-import java.io.IOException;
 import java.util.List;
 import java.util.Set;
-import java.util.StringTokenizer;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
-import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.mercury.artifact.ArtifactMetadata;
+import org.apache.maven.mercury.compare.DataBuilder;
+import org.apache.maven.mercury.compare.IDepResolver;
+import org.apache.maven.mercury.compare.mdo.Dependencies;
+import org.apache.maven.mercury.compare.mdo.Dependency;
+import org.apache.maven.mercury.util.Util;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.ProjectBuildingException;
-import org.apache.maven.project.artifact.InvalidDependencyVersionException;
 import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
 import org.mortbay.jetty.plugin.RuntimeDependencyResolver;
 import org.mortbay.jetty.plugin.util.PluginLog;
 
@@ -41,10 +39,15 @@
 
 public class MercuryDepsMojo
 extends AbstractMojo
+implements IDepResolver
 {
   private static Log _log;
 	//----------------------------------------------------------------
   /**
+   * @parameter expression="${localRepo}"
+   */
+  String localRepo;
+  /**
    * @parameter expression="${targetDir}"
    */
   String targetDir;
@@ -129,83 +132,74 @@
       if( target.isFile() )
         throw new MojoExecutionException("target directory turned to be a file, not a folder :" + targetDir );
     }
+    
+    File lr = new File( localRepo );
+
+    localRepository = new DefaultArtifactRepository( "localRepo", lr.toURI().toString(), new DefaultRepositoryLayout() );
+    
+    _log.info( "local repo set to "+lr.getAbsolutePath() );
 
     if( listFile == null )
       throw new MojoExecutionException("list file not specified");
     
     File list = new File( listFile );
-    try {
-      
-      if( !list.exists() )
-        throw new MojoExecutionException( "list file "+list.getCanonicalPath()+" does not exist" );
 
-      BufferedReader r = new BufferedReader( new FileReader(list) );
-      
-      for( String line = r.readLine(); line != null; line = r.readLine() )
-      {
-        StringTokenizer st = new StringTokenizer( line, " :" );
-        
-        int count = st.countTokens();
-        
-        if( count < 3 || count > 4 )
-        {
-          _log.info( "Cannot parse line: "+line );
-          continue;
-        }
-        
-        int i = 0;
-        
-        String [] gav = new String[4];
-        
-        while( st.hasMoreTokens() )
-          gav[i++ ] = st.nextToken();
-        
-        saveDependencies( gav[0], gav[1], gav[2], count == 4 ? gav[3] : "jar" );
-      }
-		  
+    try {
+      DataBuilder.visitDeps( list, this );
 		} catch( Exception e ) {
 		  _log.error( e.getMessage() );
 			throw new MojoExecutionException( e.getMessage() );
 		}
+
 	}
 	//-----------------------------------------------------------------------------------------------------------------
-  private void saveDependencies( String groupId, String artifactId, String version, String type )
-  throws ArtifactResolutionException, ArtifactNotFoundException, ProjectBuildingException, InvalidDependencyVersionException, IOException
+  public void resolve( String groupId, String artifactId, String version, String type )
+  throws Exception
   {
     
-    Set<Artifact> deps = (Set<Artifact>)resolver.transitivelyResolvePomDependencies( projectBuilder , groupId, artifactId, version, false );
+    long start = System.currentTimeMillis();
     
-    File fout = new File( target, groupId+"-"+artifactId+"-"+version+"-"+type+".deps" );
-
-    _log.info( fout.getCanonicalPath() );
+    Set<Artifact> dl = (Set<Artifact>)resolver.transitivelyResolvePomDependencies( projectBuilder , groupId, artifactId, version, false );
     
-    BufferedWriter w = new BufferedWriter( new FileWriter(fout) );
+    File df = DataBuilder.getFile( target, groupId, artifactId, version, type );
     
-    try
+    System.out.println( df.getCanonicalPath() );
+    
+    Dependencies deps = null;
+    
+    if( df.exists() )
+    {
+      deps = DataBuilder.read( df );
+      List l = deps.getMaven();
+      if( !Util.isEmpty( l ) )
+        l.clear();
+    }
+    else
     {
-      if( deps == null || deps.isEmpty() )
-        return;
+      deps = new Dependencies();
     
-      for( Artifact a : deps )
-      {
-        String cl = a.getClassifier();
-        
-        if( cl == null  )
-          cl = "";
-        
-        String sc = a.getScope();
-        
-        if( sc == null  )
-          sc = "compile";
-        
-        w.write( a.getGroupId()+":"+a.getArtifactId()+":"+a.getVersion()+":"+cl+":"+a.getType()+":"+sc+"\n" );
-      }
+      deps.setGroupId( groupId );
+      deps.setArtifactId( artifactId );
+      deps.setVersion( version );
+      deps.setType( type );
     }
-    finally
+    
+    deps.setMavenMillis( System.currentTimeMillis() - start );
+    
+    for( Artifact am : dl )
     {
-      if( w != null )
-        try { w.flush(); w.close(); } catch( Exception e ) { _log.error( e.getMessage() ); }
+      Dependency dep = new Dependency();
+      dep.setGroupId( am.getGroupId() );
+      dep.setArtifactId( am.getArtifactId() );
+      dep.setVersion( am.getVersion() );
+      dep.setType( am.getType() );
+      dep.setScope( am.getScope() );
+      
+      deps.addMaven( dep );
     }
+    
+    DataBuilder.write( deps, df );
+
   }
   //-----------------------------------------------------------------------------------------------------------------
   //-----------------------------------------------------------------------------------------------------------------

Propchange: maven/mercury/trunk/mercury-maven/mercury-compare-mdo/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Nov 12 12:34:05 2008
@@ -0,0 +1,4 @@
+.settings
+target
+.classpath
+.project

Added: maven/mercury/trunk/mercury-maven/mercury-compare-mdo/pom.xml
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/mercury-compare-mdo/pom.xml?rev=713499&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-mdo/pom.xml (added)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-mdo/pom.xml Wed Nov 12 12:34:05 2008
@@ -0,0 +1,61 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.mercury</groupId>
+  <artifactId>mercury-compare-mdo</artifactId>
+  <name>Mercury Compare MDO:           ${project.version}</name>
+  <description />
+
+  <parent>
+  	<groupId>org.apache.maven.mercury</groupId>
+  	<artifactId>mercury-pom</artifactId>
+  	<version>1.0.0-alpha-2-SNAPSHOT</version>
+  </parent>
+  
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.modello</groupId>
+        <artifactId>modello-maven-plugin</artifactId>
+        <version>1.0-alpha-17</version>
+        <configuration>
+          <version>1.0.0</version>
+          <model>src/main/mdo/compare.mdo</model>
+        </configuration>
+        <executions>
+          <execution>
+            <id>site-docs</id>
+            <phase>pre-site</phase>
+            <goals>
+              <goal>xdoc</goal>
+              <goal>xsd</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>standard</id>
+            <goals>
+              <goal>java</goal>
+              <goal>xpp3-reader</goal>
+              <goal>xpp3-writer</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+</plugins>
+</build>
+  <dependencies>
+  	<dependency>
+  		<groupId>org.apache.maven.mercury</groupId>
+  		<artifactId>mercury-artifact</artifactId>
+  		<version>${project.version}</version>
+  	</dependency>
+    
+    <!--  for some reason transitive does not work - have to copy deps from mercury-util --> 
+  	<dependency>
+  		<groupId>org.apache.maven.mercury</groupId>
+  		<artifactId>mercury-util</artifactId>
+  		<version>${project.version}</version>
+  	</dependency>
+    
+  </dependencies>
+  
+</project>
\ No newline at end of file

Added: maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/mercury/compare/DataBuilder.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/mercury/compare/DataBuilder.java?rev=713499&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/mercury/compare/DataBuilder.java (added)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/mercury/compare/DataBuilder.java Wed Nov 12 12:34:05 2008
@@ -0,0 +1,151 @@
+package org.apache.maven.mercury.compare;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.util.StringTokenizer;
+
+import org.apache.maven.mercury.compare.mdo.Dependencies;
+import org.apache.maven.mercury.compare.mdo.io.xpp3.DependenciesXpp3Reader;
+import org.apache.maven.mercury.compare.mdo.io.xpp3.DependenciesXpp3Writer;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class DataBuilder
+{
+  public static Dependencies read( File f )
+  throws DataException
+  {
+    try
+    {
+      return new DependenciesXpp3Reader().read( new FileInputStream(f) );
+    }
+    catch( Exception e )
+    {
+      throw new DataException(e);
+    }
+  }
+  
+  public static Dependencies read( InputStream in )
+  throws DataException
+  {
+    try
+    {
+      return new DependenciesXpp3Reader().read( in );
+    }
+    catch( Exception e )
+    {
+      throw new DataException(e);
+    }
+  }
+  
+  public static Dependencies getMetadata( byte [] in )
+  throws DataException
+  {
+    if( in == null || in.length < 10 )
+      return null;
+
+    try
+    {
+      return new DependenciesXpp3Reader().read( new ByteArrayInputStream(in) );
+    }
+    catch( Exception e )
+    {
+      throw new DataException(e);
+    }
+  }
+  
+  public static Dependencies write( Dependencies metadata, OutputStream out )
+  throws DataException
+  {
+    if( metadata == null )
+      return metadata;
+
+    try
+    {
+      new DependenciesXpp3Writer().write( new OutputStreamWriter(out), metadata );
+      
+      return metadata;
+    }
+    catch( Exception e )
+    {
+      throw new DataException(e);
+    }
+  }
+  
+  public static Dependencies write( Dependencies metadata, File f )
+  throws DataException
+  {
+    if( metadata == null )
+      return metadata;
+
+    try
+    {
+      new DependenciesXpp3Writer().write( new FileWriter(f), metadata );
+      
+      return metadata;
+    }
+    catch( Exception e )
+    {
+      throw new DataException(e);
+    }
+  }
+  
+  public static final File getFile( File dir, String groupId, String artifactId, String version, String type )
+  {
+    return new File( dir, groupId+"_"+artifactId+"_"+version+"_"+type+".deps" );
+  }
+  
+  public static final void visitDeps( File deps, IDepResolver resolver )
+  throws Exception
+  {
+    if( !deps.exists() )
+      throw new Exception( "list file "+deps.getCanonicalPath()+" does not exist" );
+
+    BufferedReader r = new BufferedReader( new FileReader(deps) );
+    
+    for( String line = r.readLine(); line != null; line = r.readLine() )
+    {
+      if( line.charAt( 0 ) == '#' )
+        continue;
+      
+      StringTokenizer st = new StringTokenizer( line, " :" );
+      
+      int count = st.countTokens();
+      
+      if( count < 3 || count > 4 )
+      {
+        System.out.println( "Cannot parse line: "+line );
+        continue;
+      }
+      
+      int i = 0;
+      
+      String [] gav = new String[4];
+      
+      while( st.hasMoreTokens() )
+        gav[i++ ] = st.nextToken();
+      
+      try
+      {
+        resolver.resolve( gav[0], gav[1], gav[2], count == 4 ? gav[3] : "jar" );
+      }
+      catch( Exception e )
+      {
+        e.printStackTrace();
+      }
+    }
+  }
+}

Added: maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/mercury/compare/DataException.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/mercury/compare/DataException.java?rev=713499&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/mercury/compare/DataException.java (added)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/mercury/compare/DataException.java Wed Nov 12 12:34:05 2008
@@ -0,0 +1,54 @@
+package org.apache.maven.mercury.compare;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class DataException
+    extends Exception
+{
+
+  /**
+   * 
+   */
+  public DataException()
+  {
+    // TODO Auto-generated constructor stub
+  }
+
+  /**
+   * @param message
+   */
+  public DataException(
+      String message )
+  {
+    super( message );
+    // TODO Auto-generated constructor stub
+  }
+
+  /**
+   * @param cause
+   */
+  public DataException(
+      Throwable cause )
+  {
+    super( cause );
+    // TODO Auto-generated constructor stub
+  }
+
+  /**
+   * @param message
+   * @param cause
+   */
+  public DataException(
+      String message,
+      Throwable cause )
+  {
+    super( message, cause );
+    // TODO Auto-generated constructor stub
+  }
+
+}

Added: maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/mercury/compare/IDepResolver.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/mercury/compare/IDepResolver.java?rev=713499&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/mercury/compare/IDepResolver.java (added)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/java/org/apache/maven/mercury/compare/IDepResolver.java Wed Nov 12 12:34:05 2008
@@ -0,0 +1,15 @@
+package org.apache.maven.mercury.compare;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public interface IDepResolver
+{
+  void resolve( String groupI, String artifactId, String version, String type )
+  throws Exception;
+  
+}

Added: maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/mdo/compare.mdo
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/mdo/compare.mdo?rev=713499&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/mdo/compare.mdo (added)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-mdo/src/main/mdo/compare.mdo Wed Nov 12 12:34:05 2008
@@ -0,0 +1,123 @@
+<model>
+  <id>dependencies-metadata</id>
+  
+  <name>Dependencies</name>
+  <description>comparisson dependencies</description>
+  
+  <defaults>
+    <default>
+      <key>package</key>
+      <value>org.apache.maven.mercury.compare.mdo</value>
+    </default>
+  </defaults>
+  
+  <classes>
+
+    <class rootElement="true">
+      <name>Dependencies</name>
+      <version>1.0.0</version>
+      <fields>
+        
+        <field>
+          <name>groupId</name>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+        
+        <field>
+          <name>artifactId</name>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+        
+        <field>
+          <name>version</name>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+        
+        <field>
+          <name>type</name>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+        
+        <field>
+          <name>mavenMillis</name>
+          <version>1.0.0</version>
+          <type>long</type>
+        </field>
+        
+        <field>
+          <name>mercuryMillis</name>
+          <version>1.0.0</version>
+          <type>long</type>
+        </field>
+        
+        <field>
+          <name>maven</name>
+          <version>1.0.0</version>
+          <description>mercury generated dependencies</description>
+          <association>
+            <type>Dependency</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+
+        <field>
+          <name>mercury</name>
+          <version>1.0.0</version>
+          <description>mercury generated dependencies</description>
+          <association>
+            <type>Dependency</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        
+      </fields>
+     </class>
+
+
+    <class>
+
+      <name>Dependency</name>
+      <version>1.0.0</version>
+      <description>dependency</description>
+
+      <fields>
+        
+        <field>
+          <name>groupId</name>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+        
+        <field>
+          <name>artifactId</name>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+        
+        <field>
+          <name>version</name>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+        
+        <field>
+          <name>type</name>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+        
+        <field>
+          <name>scope</name>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+
+      </fields>
+    </class>
+    
+  </classes>
+</model>

Modified: maven/mercury/trunk/mercury-maven/mercury-compare-mercury/pom.xml
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/mercury-compare-mercury/pom.xml?rev=713499&r1=713498&r2=713499&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-mercury/pom.xml (original)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-mercury/pom.xml Wed Nov 12 12:34:05 2008
@@ -9,6 +9,7 @@
   <description>Mercury Maven resolusion comparisson</description>
   <prerequisites />
   <inceptionYear>2008</inceptionYear>
+
 	<build>
 		<plugins>
 			<plugin>
@@ -21,6 +22,7 @@
 			</plugin>
 		</plugins>
 	</build>
+  
   <developers>
     <developer>
       <name>Oleg Gusakov</name>
@@ -37,40 +39,24 @@
   </properties>
 
   <dependencies>
-
     <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-plugin-api</artifactId>
-      <version>2.1-SNAPSHOT</version>
+    	<groupId>org.apache.maven.mercury</groupId>
+    	<artifactId>mercury-md-sat</artifactId>
+    	<version>${mercury.version}</version>
     </dependency>
 
     <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-core</artifactId>
-      <version>2.0.9</version>
+      <groupId>org.apache.maven.mercury</groupId>
+      <artifactId>mercury-compare-mdo</artifactId>
+      <version>${mercury.version}</version>
     </dependency>
 
     <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.4</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-    	<groupId>org.mortbay.jetty</groupId>
-    	<artifactId>jetty-maven-plugin</artifactId>
-    	<version>7.0.0.pre5</version>
-    </dependency>
-    <dependency>
-    	<groupId>org.apache.maven.mercury</groupId>
-    	<artifactId>mercury-md-sat</artifactId>
-    	<version>${mercury.version}</version>
-    </dependency>
-    <dependency>
-    	<groupId>org.apache.maven.mercury</groupId>
-    	<artifactId>mercury-repo-remote-m2</artifactId>
-    	<version>${mercury.version}</version>
+      <groupId>org.apache.maven.mercury</groupId>
+      <artifactId>mercury-repo-remote-m2</artifactId>
+      <version>${mercury.version}</version>
     </dependency>
+
   </dependencies>
 </project>
 

Copied: maven/mercury/trunk/mercury-maven/mercury-compare-mercury/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryResolve.java (from r712960, maven/mercury/trunk/mercury-maven/mercury-compare-mercury/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryCompareMojo.java)
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/mercury-compare-mercury/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryResolve.java?p2=maven/mercury/trunk/mercury-maven/mercury-compare-mercury/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryResolve.java&p1=maven/mercury/trunk/mercury-maven/mercury-compare-mercury/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryCompareMojo.java&r1=712960&r2=713499&rev=713499&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-mercury/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryCompareMojo.java (original)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-mercury/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryResolve.java Wed Nov 12 12:34:05 2008
@@ -1,22 +1,21 @@
 package org.sonatype.maven.plugins.mercury.compare;
 
 import java.io.File;
-import java.net.MalformedURLException;
+import java.io.FileInputStream;
+import java.io.IOException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import java.util.Set;
+import java.util.Properties;
 
-import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
-import org.apache.maven.artifact.resolver.ArtifactResolutionException;
-import org.apache.maven.artifact.resolver.ArtifactResolver;
-import org.apache.maven.execution.MavenSession;
 import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
+import org.apache.maven.mercury.compare.DataBuilder;
+import org.apache.maven.mercury.compare.DataException;
+import org.apache.maven.mercury.compare.IDepResolver;
+import org.apache.maven.mercury.compare.mdo.Dependencies;
+import org.apache.maven.mercury.compare.mdo.Dependency;
 import org.apache.maven.mercury.metadata.DependencyBuilder;
 import org.apache.maven.mercury.metadata.DependencyBuilderFactory;
 import org.apache.maven.mercury.metadata.MetadataTreeException;
@@ -26,214 +25,141 @@
 import org.apache.maven.mercury.repository.remote.m2.RemoteRepositoryM2;
 import org.apache.maven.mercury.transport.api.Server;
 import org.apache.maven.mercury.util.Util;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.ProjectBuildingException;
-import org.apache.maven.project.artifact.InvalidDependencyVersionException;
-import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
-import org.mortbay.jetty.plugin.RuntimeDependencyResolver;
-import org.mortbay.jetty.plugin.util.PluginLog;
 
 /**
  * 
  * @author Oleg Gusakov
  *
- *  @goal compare
- *  @requiresProject false
  */
 
-public class MercuryCompareMojo
-extends AbstractMojo
-implements Initializable
+public class MercuryResolve
+implements IDepResolver
 {
-  private static Log _log;
-	//----------------------------------------------------------------
-  /**
-   * @parameter expression="${localRepoDir}"
-   */
-  String localRepoDir;
-  /**
-   * @parameter expression="${listFile}"
-   */
-  String listFile;
-	/**
-	  * @parameter expression="${session}"
-	  */
-	MavenSession _session;
-
-	 /**
-   * @component
-   */
-  private ArtifactResolver artifactResolver;
-  
-  /**
-   *
-   * @component
-   */
-  private ArtifactFactory artifactFactory;
-
-  /**
-  *
-  * @component
-  */
-  private ArtifactMetadataSource metadataSource;
-  
-  /**
-   *
-   * @parameter expression="${localRepository}"
-   */
-  private ArtifactRepository localRepository;
-
-  /**
-   *
-   * @parameter expression="${project.remoteArtifactRepositories}"
-   */
-  private List remoteRepositories;
-//
-//	/**
-//	  * @parameter expression="${project}"
-//	  */
-//	MavenProject _project;
-//
-//	/**
-//	  * @component
-//	  */
-//	Prompter _prompter;
-  
-  PlexusContainer plexus;
+  static final String SYSTEM_PROPERTY_LOCAL_REPO="localRepo";
+  static final String localRepoDir = System.getProperty( SYSTEM_PROPERTY_LOCAL_REPO, "../localRepoMercury" );
+//  static final String localRepoDir = System.getProperty( SYSTEM_PROPERTY_LOCAL_REPO, "../localRepoMaven" );
+  static final File   localRepoDirFile = new File( localRepoDir );
+  
+  static final String SYSTEM_PROPERTY_LIST_FILE="list";
+  static final String list = System.getProperty( SYSTEM_PROPERTY_LIST_FILE, "../list.txt" );
+  static final File   listFile = new File( list );
   
-  RuntimeDependencyResolver resolver;
+  static final String SYSTEM_PROPERTY_REPOS_FILE="repoList";
+  static final String repoList = System.getProperty( SYSTEM_PROPERTY_REPOS_FILE, "../repositories.properties" );
+  static final File   repoListFile = new File( repoList );
+
+  static final String SYSTEM_PROPERTY_TARGET_DIR="targetDir";
+  static final String targetDir = System.getProperty( SYSTEM_PROPERTY_TARGET_DIR, "../deps" );
+  static final File   targetDirFile = new File( targetDir );
   
-  MavenProjectBuilder projectBuilder;
+  static final List<Repository> repos = new ArrayList<Repository>(8);
   
-  List<Repository> repos;
+  static LocalRepositoryM2 lRepo;
   
-  DependencyBuilder depBuilder;
+  static DependencyBuilder depBuilder;
   
 	//----------------------------------------------------------------
-	public void execute()
-	throws MojoExecutionException, MojoFailureException
+	public static void main( String [] av )
+	throws Exception
 	{
 
-    if( _session == null )
-      throw new MojoExecutionException("session not injected");
+    if( !localRepoDirFile.exists() )
+      localRepoDirFile.mkdirs();
 
-    if( localRepoDir == null )
-      throw new MojoExecutionException("local repo dir not injected");
+    if( !listFile.exists() )
+      throw new Exception(listFile.getCanonicalPath()+" does nor exist");
 
-    try {
-		  
-		  if( projectBuilder == null )
-		    throw new Exception("project builder is null");
-		  
-      ArtifactBasicMetadata query = new ArtifactBasicMetadata("asm:asm-xml:3.0::jar");
-      
-      Collection<ArtifactBasicMetadata> res1 = getMaven( query );
-      
-      Collection<ArtifactBasicMetadata> res2 = getMaven( query );
+    if( !repoListFile.exists() )
+      throw new Exception(repoListFile.getCanonicalPath()+" does nor exist");
+
+    if( !targetDirFile.exists() )
+      targetDirFile.mkdirs();
+    
+    lRepo = new LocalRepositoryM2( "localMercury", new File(localRepoDir) );
+    repos.add( lRepo );
+    
+    Properties rep = new Properties();
+    rep.load( new FileInputStream(repoListFile) );
+
+    for( Object key : rep.keySet() )
+    {
+      Server server = new Server( (String)key, new URL(rep.getProperty( (String)key )) );
+      RemoteRepositoryM2 repo = new RemoteRepositoryM2( server );
       
-      compare( res1, res2 );
+      repos.add( repo );
+    }
+    
+    depBuilder = DependencyBuilderFactory.create( DependencyBuilderFactory.JAVA_DEPENDENCY_MODEL, repos, null, null, null );
+
+    MercuryResolve mc = new MercuryResolve();
+    
+    if( av == null || av.length < 1 )
+      DataBuilder.visitDeps( listFile, mc );
 
-		} catch( Exception e ) {
-		  _log.error( e.getMessage() );
-			throw new MojoExecutionException( e.getMessage() );
-		}
 	}
 	
 	//------------------------------------------------------------------------
-  public void initialize()
-  throws InitializationException
+  public void resolve( String groupId, String artifactId, String version, String type )
+  throws Exception
   {
-    _log = getLog();
+    String ac = groupId+":"+artifactId+":"+version+"::"+type;
+    
+    System.out.println("\n======>  "+ac);
+    
+    long start = System.currentTimeMillis();
+    
+    ArtifactBasicMetadata bmd = new ArtifactBasicMetadata( ac );
+    
+    MetadataTreeNode root = depBuilder.buildTree( bmd, null );
+    long ll = System.currentTimeMillis();
+    System.out.println("BuildTree: " + (ll - start) );
     
-    PluginLog.setLog( _log );
+    List<ArtifactMetadata> dl = depBuilder.resolveConflicts( root );
+    System.out.println("resolveDeps: " + (System.currentTimeMillis() - ll) );
     
-    plexus = _session.getContainer();
+    File df = DataBuilder.getFile( targetDirFile, bmd.getGroupId(), bmd.getArtifactId(), bmd.getVersion(), bmd.getType() );
     
-    resolver = new RuntimeDependencyResolver( artifactFactory
-                                            , artifactResolver
-                                            , metadataSource
-                                            , localRepository
-                                            , remoteRepositories
-                                           );
+    System.out.println( df.getCanonicalPath() );
     
-    try
+    Dependencies deps = null;
+    
+    if( df.exists() )
     {
-      projectBuilder = (MavenProjectBuilder)plexus.lookup( MavenProjectBuilder.ROLE );
-      
-      repos = new ArrayList<Repository>();
-      
-      LocalRepositoryM2 lRepo = new LocalRepositoryM2( "localMercury", new File(localRepoDir) );
-      repos.add( lRepo );
-      
-      for( ArtifactRepository ar : (List<ArtifactRepository>)remoteRepositories )
-      {
-        Server server = new Server( ar.getId(), new URL(ar.getUrl()) );
-        
-        RemoteRepositoryM2 rr = new RemoteRepositoryM2( server );
-        
-        repos.add( rr );
-      }
-      
-      depBuilder = DependencyBuilderFactory.create( DependencyBuilderFactory.JAVA_DEPENDENCY_MODEL, repos, null, null, null );
-      
+      deps = DataBuilder.read( df );
+      List l = deps.getMercury();
+      if( !Util.isEmpty( l ) )
+        l.clear();
     }
-    catch( Exception e )
+    else
     {
-      throw new InitializationException(e.getMessage());
-    }
-  }
-  
-  private Collection<ArtifactBasicMetadata> getMaven( ArtifactBasicMetadata bmd )
-  throws MalformedURLException, ArtifactResolutionException, ArtifactNotFoundException, ProjectBuildingException, InvalidDependencyVersionException
-  {
-    Set<org.apache.maven.artifact.Artifact> deps = resolver.transitivelyResolvePomDependencies( projectBuilder , "asm", "asm-xml", "3.0", false );
+      deps = new Dependencies();
     
-    if( deps == null || deps.isEmpty() )
-      return null;
+      deps.setGroupId( bmd.getGroupId() );
+      deps.setArtifactId( bmd.getArtifactId() );
+      deps.setVersion( bmd.getVersion() );
+      deps.setType( bmd.getType() );
+    }
     
-    ArrayList<ArtifactBasicMetadata> res = new ArrayList<ArtifactBasicMetadata>( deps.size() );
+    deps.setMercuryMillis( System.currentTimeMillis() - start );
     
-    for( org.apache.maven.artifact.Artifact a : deps )
+    for( ArtifactMetadata am : dl )
     {
-      res.add( 
-        new ArtifactBasicMetadata( 
-            a.getGroupId()+":"+a.getArtifactId()+":"+a.getVersion()
-            + ":"+Util.nvlS( a.getClassifier(), "" )
-            + ":"+Util.nvlS( a.getType(), ArtifactBasicMetadata.DEFAULT_ARTIFACT_TYPE )
-                                  ) 
-             );
+      Dependency dep = new Dependency();
+      dep.setGroupId( am.getGroupId() );
+      dep.setArtifactId( am.getArtifactId() );
+      dep.setVersion( am.getVersion() );
+      dep.setType( am.getType() );
+      dep.setScope( am.getScope() );
+      
+      deps.addMercury( dep );
     }
-
-    return res;
-  }
-
-  private Collection<? extends ArtifactBasicMetadata> getMercury( ArtifactBasicMetadata bmd )
-  throws MetadataTreeException
-  {
-    MetadataTreeNode root = depBuilder.buildTree( bmd, null );
     
-    List<ArtifactMetadata> deps = depBuilder.resolveConflicts( root );
+    DataBuilder.write( deps, df );
     
-    return deps;
   }
 	
   private void compare( Collection<ArtifactBasicMetadata> r1, Collection<ArtifactBasicMetadata> r2 )
   {
-
-    _log.info("\n-------------------------------> Maven Results:");
-    System.out.println( r1 );
-    _log.info("\n<-------------------------------");
-
-    _log.info("\n-------------------------------> Mercury Results:");
-    System.out.println( r2 );
-    _log.info("\n<-------------------------------");
-
   }
 	//----------------------------------------------------------------
 	//----------------------------------------------------------------

Propchange: maven/mercury/trunk/mercury-maven/mercury-compare-mercury/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryResolve.java
------------------------------------------------------------------------------
    svn:mergeinfo = 

Added: maven/mercury/trunk/mercury-maven/repositories.properties
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/repositories.properties?rev=713499&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-maven/repositories.properties (added)
+++ maven/mercury/trunk/mercury-maven/repositories.properties Wed Nov 12 12:34:05 2008
@@ -0,0 +1,5 @@
+#sona.central=http://repository.sonatype.org/content/groups/public
+maven.central=http://repo1.maven.org/maven2
+#codehaus.snapshots=http://snapshots.repository.codehaus.org
+#apache.snapshots=http://people.apache.org/repo/m2-snapshot-repository
+#codehaus.releases=http://repository.codehaus.org