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 02:12:48 UTC
svn commit: r712895 - in
/maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin: ./ src/
src/main/ src/main/java/ src/main/java/org/ src/main/java/org/sonatype/
src/main/java/org/sonatype/maven/ src/main/java/org/sonatype/maven/plugins/
src/...
Author: ogusakov
Date: Mon Nov 10 17:12:48 2008
New Revision: 712895
URL: http://svn.apache.org/viewvc?rev=712895&view=rev
Log:
splitting maven 2.0.9 from 3.0-SN for compare tool
Added:
maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/ (with props)
maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/c
maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/pom.xml
maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/src/
maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/src/main/
maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/src/main/java/
maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/src/main/java/org/
maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/src/main/java/org/sonatype/
maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/src/main/java/org/sonatype/maven/
maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/src/main/java/org/sonatype/maven/plugins/
maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/src/main/java/org/sonatype/maven/plugins/mercury/
maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/
maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryCompareMojo.java
maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/src/main/resources/
maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/src/main/resources/META-INF/
Propchange: maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Nov 10 17:12:48 2008
@@ -0,0 +1,4 @@
+.settings
+target
+.classpath
+.project
Added: maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/c
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/c?rev=712895&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/c (added)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/c Mon Nov 10 17:12:48 2008
@@ -0,0 +1 @@
+mvnDebug -X org.sonatype.maven.plugins:mercury-compare-plugin:1.0-test:compare -DlocalFileDir=./target/repo
Added: maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/pom.xml?rev=712895&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/pom.xml (added)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/pom.xml Mon Nov 10 17:12:48 2008
@@ -0,0 +1,76 @@
+<?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-mercury-plugin</artifactId>
+ <packaging>maven-plugin</packaging>
+ <name>Mercury Maven resolusion comparisson</name>
+ <version>1.0-test</version>
+ <description>Mercury Maven resolusion comparisson</description>
+ <prerequisites />
+ <inceptionYear>2008</inceptionYear>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <developers>
+ <developer>
+ <name>Oleg Gusakov</name>
+ <email>ogusakov@apache.org</email>
+ <roles>
+ <role>jack-of-all-trades</role>
+ </roles>
+ <timezone>-8</timezone>
+ </developer>
+ </developers>
+
+ <properties>
+ <mercury.version>1.0.0-alpha-2-SNAPSHOT</mercury.version>
+ </properties>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-api</artifactId>
+ <version>2.1-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-core</artifactId>
+ <version>2.0.9</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>
+ </dependency>
+ </dependencies>
+</project>
+
Added: maven/mercury/trunk/mercury-maven/mercury-compare-mercury-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-mercury-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryCompareMojo.java?rev=712895&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryCompareMojo.java (added)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-mercury-plugin/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryCompareMojo.java Mon Nov 10 17:12:48 2008
@@ -0,0 +1,240 @@
+package org.sonatype.maven.plugins.mercury.compare;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+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.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;
+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
+{
+ 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;
+
+ RuntimeDependencyResolver resolver;
+
+ MavenProjectBuilder projectBuilder;
+
+ List<Repository> repos;
+
+ DependencyBuilder depBuilder;
+
+ //----------------------------------------------------------------
+ public void execute()
+ throws MojoExecutionException, MojoFailureException
+ {
+
+ if( _session == null )
+ throw new MojoExecutionException("session not injected");
+
+ if( localRepoDir == null )
+ throw new MojoExecutionException("local repo dir not injected");
+
+ 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 );
+
+ compare( res1, res2 );
+
+ } catch( Exception e ) {
+ _log.error( e.getMessage() );
+ throw new MojoExecutionException( e.getMessage() );
+ }
+ }
+
+ //------------------------------------------------------------------------
+ public void initialize()
+ throws InitializationException
+ {
+ _log = getLog();
+
+ PluginLog.setLog( _log );
+
+ plexus = _session.getContainer();
+
+ resolver = new RuntimeDependencyResolver( artifactFactory
+ , artifactResolver
+ , metadataSource
+ , localRepository
+ , remoteRepositories
+ );
+
+ try
+ {
+ 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 );
+
+ }
+ catch( Exception e )
+ {
+ 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 );
+
+ if( deps == null || deps.isEmpty() )
+ return null;
+
+ ArrayList<ArtifactBasicMetadata> res = new ArrayList<ArtifactBasicMetadata>( deps.size() );
+
+ for( org.apache.maven.artifact.Artifact a : deps )
+ {
+ 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 );
+
+ 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<-------------------------------");
+
+ }
+ //----------------------------------------------------------------
+ //----------------------------------------------------------------
+}