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