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/11 03:56:51 UTC

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

Author: ogusakov
Date: Mon Nov 10 18:56:50 2008
New Revision: 712924

URL: http://svn.apache.org/viewvc?rev=712924&view=rev
Log:
intermediate 

Added:
    maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/list.txt
    maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryDepsMojo.java   (contents, props changed)
      - copied, changed from r712897, maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryCompareMojo.java
Removed:
    maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryCompareMojo.java
Modified:
    maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/c
    maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/pom.xml

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=712924&r1=712923&r2=712924&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/c (original)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/c Mon Nov 10 18:56:50 2008
@@ -1 +1 @@
-mvnDebug -X org.sonatype.maven.plugins:mercury-compare-plugin:1.0-test:compare -DlocalFileDir=./target/repo
+mvn org.sonatype.maven.plugins:mercury-compare-maven-plugin:1.0:deps -DtargetDir=./target/deps -DlistFile=./list.txt

Added: maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/list.txt
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/list.txt?rev=712924&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/list.txt (added)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/list.txt Mon Nov 10 18:56:50 2008
@@ -0,0 +1 @@
+asm:asm-xml:3.0
\ No newline at end of file

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=712924&r1=712923&r2=712924&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 Mon Nov 10 18:56:50 2008
@@ -1,13 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <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.sonatype.maven.plugins</groupId>
-  <artifactId>mercury-compare-plugin</artifactId>
+  <artifactId>mercury-compare-maven-plugin</artifactId>
   <packaging>maven-plugin</packaging>
   <name>Mercury Maven resolusion comparisson</name>
-  <version>1.0-test</version>
+  <version>1.0</version>
   <description>Mercury Maven resolusion comparisson</description>
   <prerequisites />
+  
   <inceptionYear>2008</inceptionYear>
 	<build>
 		<plugins>
@@ -51,26 +53,10 @@
     </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>
-    </dependency>
-  </dependencies>
-</project>
 
+  </dependencies>
+</project>
\ No newline at end of file

Copied: maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryDepsMojo.java (from r712897, maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryCompareMojo.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/MercuryDepsMojo.java?p2=maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryDepsMojo.java&p1=maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryCompareMojo.java&r1=712897&r2=712924&rev=712924&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryCompareMojo.java (original)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-maven-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryDepsMojo.java Mon Nov 10 18:56:50 2008
@@ -1,13 +1,16 @@
 package org.sonatype.maven.plugins.mercury.compare;
 
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
 import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
+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;
@@ -15,17 +18,6 @@
 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.metadata.DependencyBuilder;
-import org.apache.maven.mercury.metadata.DependencyBuilderFactory;
-import org.apache.maven.mercury.metadata.MetadataTreeException;
-import org.apache.maven.mercury.metadata.MetadataTreeNode;
-import org.apache.maven.mercury.repository.api.Repository;
-import org.apache.maven.mercury.repository.local.m2.LocalRepositoryM2;
-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;
@@ -43,20 +35,20 @@
  * 
  * @author Oleg Gusakov
  *
- *  @goal compare
+ *  @goal deps
  *  @requiresProject false
  */
 
-public class MercuryCompareMojo
+public class MercuryDepsMojo
 extends AbstractMojo
 implements Initializable
 {
   private static Log _log;
 	//----------------------------------------------------------------
   /**
-   * @parameter expression="${localRepoDir}"
+   * @parameter expression="${targetDir}"
    */
-  String localRepoDir;
+  String targetDir;
   /**
    * @parameter expression="${listFile}"
    */
@@ -65,30 +57,25 @@
 	  * @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}"
@@ -111,9 +98,7 @@
   
   MavenProjectBuilder projectBuilder;
   
-  List<Repository> repos;
-  
-  DependencyBuilder depBuilder;
+  File target;
   
 	//----------------------------------------------------------------
 	public void execute()
@@ -123,22 +108,54 @@
     if( _session == null )
       throw new MojoExecutionException("session not injected");
 
-    if( localRepoDir == null )
-      throw new MojoExecutionException("local repo dir not injected");
+    if( targetDir == null )
+      throw new MojoExecutionException("target dir not specified");
+    
+    target = new File( targetDir );
+    
+    if( !target.exists() )
+    {
+      target.mkdirs();
+    }
+    else
+    {
+      if( target.isFile() )
+        throw new MojoExecutionException("target directory turned to be a file, not a folder :" + targetDir );
+    }
+
+    if( listFile == null )
+      throw new MojoExecutionException("list file not specified");
+    
+    File list = new File( listFile );
+    
+    if( list.exists() )
+      throw new MojoExecutionException( "list file "+listFile+" does not 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 );
+      BufferedReader r = new BufferedReader( new FileReader(list) );
       
-      Collection<ArtifactBasicMetadata> res2 = getMaven( query );
-      
-      compare( res1, res2 );
-
+      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" );
+      }
+		  
 		} catch( Exception e ) {
 		  _log.error( e.getMessage() );
 			throw new MojoExecutionException( e.getMessage() );
@@ -153,6 +170,9 @@
     
     PluginLog.setLog( _log );
     
+    if( _session == null )
+      throw new InitializationException( "Maven session is not injected by the container ");
+    
     plexus = _session.getContainer();
     
     resolver = new RuntimeDependencyResolver( artifactFactory
@@ -166,22 +186,8 @@
     {
       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 );
-      
+      if( projectBuilder == null )
+        throw new Exception("project builder is null");
     }
     catch( Exception e )
     {
@@ -189,51 +195,37 @@
     }
   }
   
-  private Collection<ArtifactBasicMetadata> getMaven( ArtifactBasicMetadata bmd )
-  throws MalformedURLException, ArtifactResolutionException, ArtifactNotFoundException, ProjectBuildingException, InvalidDependencyVersionException
+  private void saveDependencies( String groupId, String artifactId, String version, String type )
+  throws ArtifactResolutionException, ArtifactNotFoundException, ProjectBuildingException, InvalidDependencyVersionException, IOException
   {
-    Set<org.apache.maven.artifact.Artifact> deps = resolver.transitivelyResolvePomDependencies( projectBuilder , "asm", "asm-xml", "3.0", false );
+    Set<Artifact> deps = (Set<Artifact>)resolver.transitivelyResolvePomDependencies( projectBuilder , groupId, artifactId, version, false );
     
-    if( deps == null || deps.isEmpty() )
-      return null;
+    File fout = new File( target, groupId+"-"+artifactId+"-"+version+"-"+type+".deps" );
     
-    ArrayList<ArtifactBasicMetadata> res = new ArrayList<ArtifactBasicMetadata>( deps.size() );
+    BufferedWriter w = new BufferedWriter( new FileWriter(fout) );
     
-    for( org.apache.maven.artifact.Artifact a : deps )
+    try
     {
-      res.add( 
-        new ArtifactBasicMetadata( 
-            a.getGroupId()+":"+a.getArtifactId()+":"+a.getVersion()
-            + ":"+Util.nvlS( a.getClassifier(), "" )
-            + ":"+Util.nvlS( a.getType(), ArtifactBasicMetadata.DEFAULT_ARTIFACT_TYPE )
-                                  ) 
-             );
-    }
-
-    return res;
-  }
-
-  private Collection<? extends ArtifactBasicMetadata> getMercury( ArtifactBasicMetadata bmd )
-  throws MetadataTreeException
-  {
-    MetadataTreeNode root = depBuilder.buildTree( bmd, null );
-    
-    List<ArtifactMetadata> deps = depBuilder.resolveConflicts( root );
+      w.write( groupId+":"+artifactId+":"+version+"::"+type );
+      
+      if( deps == null || deps.isEmpty() )
+        return;
     
-    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<-------------------------------");
-
+      for( Artifact a : deps )
+      {
+        String cl = a.getClassifier();
+        
+        if( cl == null  )
+          cl = "";
+        
+        w.write( a.getGroupId()+":"+a.getArtifactId()+":"+a.getVersion()+":"+cl+":"+a.getType() );
+      }
+    }
+    finally
+    {
+      if( w != null )
+        try { w.flush(); w.close(); } catch( Exception e ) { _log.error( e.getMessage() ); }
+    }
   }
 	//----------------------------------------------------------------
 	//----------------------------------------------------------------

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