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 =