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 2009/04/29 08:10:19 UTC
svn commit: r769672 - in
/maven/components/branches/maven-3.0-mercury-763966: ./
maven-compat/src/main/java/org/apache/maven/artifact/repository/
maven-core/ maven-core/src/main/java/org/apache/maven/ maven-embedder/
maven-project/ maven-repository-mer...
Author: ogusakov
Date: Wed Apr 29 06:10:16 2009
New Revision: 769672
URL: http://svn.apache.org/viewvc?rev=769672&view=rev
Log:
Mercury RS integration compiles Maven, all UTs but 1 or 2 (depending on how to interpret null scope) work. Suspect an error in the test, will ask for second opinion
Modified:
maven/components/branches/maven-3.0-mercury-763966/build-mercury.xml
maven/components/branches/maven-3.0-mercury-763966/maven-compat/src/main/java/org/apache/maven/artifact/repository/ReactorArtifactRepository.java
maven/components/branches/maven-3.0-mercury-763966/maven-core/pom.xml
maven/components/branches/maven-3.0-mercury-763966/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
maven/components/branches/maven-3.0-mercury-763966/maven-embedder/pom.xml
maven/components/branches/maven-3.0-mercury-763966/maven-project/pom.xml
maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/pom.xml
maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryAdaptor.java
maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryRepositorySystem.java
maven/components/branches/maven-3.0-mercury-763966/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
maven/components/branches/maven-3.0-mercury-763966/pom.xml
Modified: maven/components/branches/maven-3.0-mercury-763966/build-mercury.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/build-mercury.xml?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/build-mercury.xml (original)
+++ maven/components/branches/maven-3.0-mercury-763966/build-mercury.xml Wed Apr 29 06:10:16 2009
@@ -347,14 +347,15 @@
<jvmarg value="-Dmaven.repo.local=${maven.repo.local}"/>
<jvmarg value="-Dsurefire.useFile=${surefire.useFile}"/>
+ <jvmarg value="-Xmx168m"/>
<!--
<debug-the-bootstrap>
-
+-->
<jvmarg value="-Xdebug"/>
<jvmarg value="-Xnoagent"/>
<jvmarg value="-Djava.compiler=NONE"/>
<jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"/>
-
+<!--
</debug-the-bootstrap>
-->
</java>
Modified: maven/components/branches/maven-3.0-mercury-763966/maven-compat/src/main/java/org/apache/maven/artifact/repository/ReactorArtifactRepository.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-compat/src/main/java/org/apache/maven/artifact/repository/ReactorArtifactRepository.java?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-compat/src/main/java/org/apache/maven/artifact/repository/ReactorArtifactRepository.java (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-compat/src/main/java/org/apache/maven/artifact/repository/ReactorArtifactRepository.java Wed Apr 29 06:10:16 2009
@@ -38,7 +38,7 @@
*
*/
-@Component( role=ArtifactRepository.class,hint="reactor")
+@Component( role=ArtifactRepository.class,hint="reactor",instantiationStrategy="singleton")
public class ReactorArtifactRepository
//extends Repository
implements ArtifactRepository
@@ -60,6 +60,8 @@
private Map<String, String> storage = new HashMap<String, String>(32);
+ private boolean initialized = false;
+
public static String calculateKey( Artifact artifact )
{
// GAV only
@@ -106,6 +108,8 @@
this.baseDir = baseDir.getCanonicalPath();
this.url = baseDir.toURL().toString();
+
+ this.initialized = true;
}
catch ( IOException e )
{
@@ -157,6 +161,16 @@
return null;
}
+ public boolean isEmpty()
+ {
+ return storage.isEmpty();
+ }
+
+ public boolean isInitialized()
+ {
+ return initialized;
+ }
+
public String getKey()
{
return getId();
@@ -223,6 +237,11 @@
{
return baseDir;
}
+
+ public Map<String, String> getStorage()
+ {
+ return storage;
+ }
public String getId()
{
Modified: maven/components/branches/maven-3.0-mercury-763966/maven-core/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-core/pom.xml?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-core/pom.xml (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-core/pom.xml Wed Apr 29 06:10:16 2009
@@ -117,6 +117,20 @@
<artifactId>maven-mercury</artifactId>
<version>${project.version}</version>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-repository-mercury</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.maven.mercury</groupId>
+ <artifactId>mercury-plexus</artifactId>
+ <version>${mercuryVersion}</version>
+ <scope>test</scope>
+ </dependency>
+
<dependency>
<groupId>org.sonatype.spice</groupId>
<artifactId>model-builder</artifactId>
@@ -129,6 +143,8 @@
<groupId>commons-jxpath</groupId>
<artifactId>commons-jxpath</artifactId>
</dependency>
+
+
</dependencies>
<build>
<plugins>
Modified: maven/components/branches/maven-3.0-mercury-763966/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-core/src/main/java/org/apache/maven/DefaultMaven.java (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-core/src/main/java/org/apache/maven/DefaultMaven.java Wed Apr 29 06:10:16 2009
@@ -28,6 +28,9 @@
import java.util.Iterator;
import java.util.List;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ReactorArtifactRepository;
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import org.apache.maven.execution.DefaultMavenExecutionResult;
import org.apache.maven.execution.DuplicateProjectException;
@@ -76,6 +79,9 @@
@Requirement
protected RuntimeInformation runtimeInformation;
+
+ @Requirement(role=ArtifactRepository.class,hint="reactor")
+ private ReactorArtifactRepository reactorRepository;
@Requirement
private Logger logger;
@@ -139,6 +145,10 @@
if ( reactorManager.hasMultipleProjects() )
{
logger.info( "Reactor build order: " );
+
+ List<MavenProject> sortedProjects = reactorManager.getSortedProjects();
+
+ initializeReactorRepository( reactorManager.getTopLevelProject(), sortedProjects );
for ( Iterator i = reactorManager.getSortedProjects().iterator(); i.hasNext(); )
{
@@ -228,6 +238,21 @@
return reactorManager;
}
+
+ private void initializeReactorRepository( MavenProject topLevelProject, List<MavenProject> projects )
+ {
+ reactorRepository.setReactorRoot( topLevelProject.getArtifact()
+ , topLevelProject.getBasedir()
+ , topLevelProject.getBuild().getDirectory()
+ );
+
+ for( MavenProject project : projects )
+ {
+ Artifact projectArtifact = project.getArtifact();
+
+ reactorRepository.addArtifact( projectArtifact, project.getBuild().getDirectory() );
+ }
+ }
protected List getProjects( MavenExecutionRequest request )
throws MavenExecutionException
Modified: maven/components/branches/maven-3.0-mercury-763966/maven-embedder/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-embedder/pom.xml?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-embedder/pom.xml (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-embedder/pom.xml Wed Apr 29 06:10:16 2009
@@ -67,6 +67,17 @@
<groupId>commons-jxpath</groupId>
<artifactId>commons-jxpath</artifactId>
</dependency>
+
+
+ <!-- Test dependencies for Jetty -->
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty-client</artifactId>
+ <classifier>assembly</classifier>
+ <version>6.1.15</version>
+ <scope>test</scope>
+ </dependency>
+
</dependencies>
<build>
<resources>
Modified: maven/components/branches/maven-3.0-mercury-763966/maven-project/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-project/pom.xml?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-project/pom.xml (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-project/pom.xml Wed Apr 29 06:10:16 2009
@@ -81,6 +81,20 @@
<artifactId>commons-jxpath</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-repository-mercury</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-mercury</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+
<dependency>
<groupId>org.sonatype.plexus</groupId>
<artifactId>plexus-jetty6</artifactId>
@@ -101,6 +115,13 @@
</dependency>
<dependency>
+ <groupId>org.apache.maven.mercury</groupId>
+ <artifactId>mercury-plexus</artifactId>
+ <version>${mercuryVersion}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<scope>test</scope>
Modified: maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/pom.xml?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/pom.xml (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/pom.xml Wed Apr 29 06:10:16 2009
@@ -36,6 +36,11 @@
<groupId>org.apache.maven</groupId>
<artifactId>maven-repository</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-model</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.maven</groupId>
Modified: maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryAdaptor.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryAdaptor.java?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryAdaptor.java (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryAdaptor.java Wed Apr 29 06:10:16 2009
@@ -34,6 +34,7 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ReactorArtifactRepository;
import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
@@ -47,13 +48,12 @@
import org.apache.maven.mercury.builder.api.DependencyProcessor;
import org.apache.maven.mercury.repository.api.Repository;
import org.apache.maven.mercury.repository.local.m2.LocalRepositoryM2;
-import org.apache.maven.mercury.repository.local.map.DefaultStorage;
import org.apache.maven.mercury.repository.local.map.LocalRepositoryMap;
+import org.apache.maven.mercury.repository.local.map.ReactorStorage;
import org.apache.maven.mercury.repository.local.map.StorageException;
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.model.Dependency;
import org.apache.maven.repository.MavenArtifactMetadata;
import org.apache.maven.repository.MetadataGraph;
import org.apache.maven.repository.MetadataGraphNode;
@@ -62,84 +62,101 @@
* @author Oleg Gusakov
* @version $Id$
*/
-public class MercuryAdaptor
+class MercuryAdaptor
{
-
- private static Map<String, Repository> _repos = Collections.synchronizedMap( new HashMap<String, Repository>() );
-
+
+ private static Map<String, Repository> _repos = Collections.synchronizedMap( new HashMap<String, Repository>() );
+
private static LocalRepositoryMap _reactorRepository;
/**
* @param repository
- * @throws StorageException
+ * @param dependencyProcessor
+ * @throws StorageException
*/
- public static void initializeReactor( ReactorArtifactRepository repository, DependencyProcessor dependencyProcessor )
- {
- try
+ private static void initializeReactor( ReactorArtifactRepository mavenReactorRepository,
+ DependencyProcessor dependencyProcessor )
{
- _reactorRepository = new LocalRepositoryMap( dependencyProcessor, new DefaultStorage() );
-
-// repository.
+ if ( mavenReactorRepository == null )
+ return;
+
+ try
+ {
+ _reactorRepository =
+ new LocalRepositoryMap( "reactor", dependencyProcessor,
+ new ReactorStorage( new File( mavenReactorRepository.getBasedir() ),
+ mavenReactorRepository.getStorage() ) );
+ }
+ catch ( StorageException e )
+ {
+ throw new IllegalArgumentException( e );
+ }
+
}
- catch ( StorageException e )
+
+ public static void deleteReactor()
{
- throw new IllegalArgumentException( e );
+ _reactorRepository = null;
}
-
- }
- public static List<Repository> toMercuryRepos( ArtifactRepository localRepository,
- List<?> remoteRepositories,
- DependencyProcessor dependencyProcessor
- )
+
+ public static List<Repository> toMercuryRepos( ReactorArtifactRepository reactorRepository,
+ ArtifactRepository localRepository, List<?> remoteRepositories,
+ DependencyProcessor dependencyProcessor )
{
if ( localRepository == null && Util.isEmpty( remoteRepositories ) )
return null;
-
- if( "legacy".equals( localRepository.getLayout().getId() ) )
+
+ if ( "legacy".equals( localRepository.getLayout().getId() ) )
return null;
-
- if( !Util.isEmpty( remoteRepositories ) )
- for( Object ro : remoteRepositories )
+
+ if ( !Util.isEmpty( remoteRepositories ) )
+ for ( Object ro : remoteRepositories )
{
- if( ArtifactRepository.class.isAssignableFrom( ro.getClass() ) )
+ if ( ArtifactRepository.class.isAssignableFrom( ro.getClass() ) )
{
ArtifactRepository ar = (ArtifactRepository) ro;
-
- if( "legacy".equals( ar.getLayout().getId() ) )
+
+ if ( "legacy".equals( ar.getLayout().getId() ) )
return null;
}
}
-
+
+ if ( _reactorRepository == null && reactorRepository.isInitialized() )
+ initializeReactor( reactorRepository, dependencyProcessor );
+
int nRepos =
- ( localRepository == null ? 0 : 1 ) + ( Util.isEmpty( remoteRepositories ) ? 0 : remoteRepositories.size() );
+ ( _reactorRepository == null ? 0 : 1 ) + ( localRepository == null ? 0 : 1 )
+ + ( Util.isEmpty( remoteRepositories ) ? 0 : remoteRepositories.size() );
- Map<String, Repository> repos = new LinkedHashMap<String, Repository>(nRepos);
-
+ Map<String, Repository> repos = new LinkedHashMap<String, Repository>( nRepos );
+
+ if ( _reactorRepository != null )
+ repos.put( _reactorRepository.getId(), _reactorRepository );
if ( localRepository != null )
{
String url = localRepository.getUrl();
-
+
LocalRepositoryM2 lr = (LocalRepositoryM2) _repos.get( url );
-
- if( lr == null )
+
+ if ( lr == null )
try
{
URI rootURI = new URI( url );
-
- File localRepoDir = new File( rootURI );
-
+
+ File localRepoDir = new File( rootURI );
+
lr = new LocalRepositoryM2( localRepository.getId(), localRepoDir, dependencyProcessor );
-
-// lr.setSnapshotAlwaysWins( true );
-
+
+ // lr.setSnapshotAlwaysWins( true );
+
_repos.put( url, lr );
}
catch ( URISyntaxException e )
{
throw new IllegalArgumentException( e );
}
- repos.put( url, lr );
+ repos.put( url, lr );
}
if ( !Util.isEmpty( remoteRepositories ) )
@@ -148,25 +165,26 @@
{
String url;
String id;
-
- if( ArtifactRepository.class.isAssignableFrom( o.getClass() ))
+
+ if ( ArtifactRepository.class.isAssignableFrom( o.getClass() ) )
{
ArtifactRepository ar = (ArtifactRepository) o;
url = ar.getUrl();
id = ar.getId();
}
- else if( org.apache.maven.model.Repository.class.isAssignableFrom( o.getClass() ))
+ else if ( org.apache.maven.model.Repository.class.isAssignableFrom( o.getClass() ) )
{
org.apache.maven.model.Repository ar = (org.apache.maven.model.Repository) o;
url = ar.getUrl();
id = ar.getId();
}
else
- throw new IllegalArgumentException( "found illegal class in the remote repository list - " + o.getClass().getName() );
-
+ throw new IllegalArgumentException( "found illegal class in the remote repository list - "
+ + o.getClass().getName() );
+
RemoteRepositoryM2 rr = (RemoteRepositoryM2) _repos.get( url );
-
- if( rr == null )
+
+ if ( rr == null )
{
Server server;
try
@@ -187,58 +205,63 @@
List<Repository> res = new ArrayList<Repository>( repos.size() );
- for( Entry<String, Repository> e : repos.entrySet() )
+ for ( Entry<String, Repository> e : repos.entrySet() )
res.add( e.getValue() );
-
-//System.out.println("Converted "+nRepos+" -> "+res.size());
-//
+
+ // System.out.println("Converted "+nRepos+" -> "+res.size());
+ //
return res;
}
private static void setInExClusion( ArtifactMetadata md, List<String> patterns, boolean inc )
{
- if( Util.isEmpty( patterns ) )
+ if ( Util.isEmpty( patterns ) )
return;
-
+
List<ArtifactMetadata> lusions = new ArrayList<ArtifactMetadata>( patterns.size() );
-
- for( String pattern : patterns )
- lusions.add( new ArtifactMetadata(pattern) );
-
- if( inc )
+
+ for ( String pattern : patterns )
+ lusions.add( new ArtifactMetadata( pattern ) );
+
+ if ( inc )
md.setInclusions( lusions );
else
md.setExclusions( lusions );
}
-
+
public static ArtifactMetadata toMercuryMetadata( Artifact a )
{
+ ArtifactHandler h = a.getArtifactHandler();
+
ArtifactMetadata md = new ArtifactMetadata();
+
md.setGroupId( a.getGroupId() );
md.setArtifactId( a.getArtifactId() );
md.setVersion( a.getVersion() );
- md.setType( a.getType() );
+ md.setType( h == null ? a.getType() : h.getExtension() );
md.setScope( a.getScope() );
md.setOptional( a.isOptional() );
-
- if( "test-jar".equals( a.getType() ) )
+ md.setClassifier( h == null ? a.getClassifier() : h.getClassifier() );
+
+ // if the handler allowed this ..
+ if ( "test-jar".equals( a.getType() ) )
{
md.setType( "jar" );
md.setClassifier( "tests" );
}
-
+
ArtifactFilter af = a.getDependencyFilter();
-
- if( af != null )
+
+ if ( af != null )
{
- if( ExcludesArtifactFilter.class.isAssignableFrom( af.getClass() ) )
+ if ( ExcludesArtifactFilter.class.isAssignableFrom( af.getClass() ) )
{
- setInExClusion( md, ((ExcludesArtifactFilter)af).getPatterns(), false );
+ setInExClusion( md, ( (ExcludesArtifactFilter) af ).getPatterns(), false );
+ }
+ else if ( IncludesArtifactFilter.class.isAssignableFrom( af.getClass() ) )
+ {
+ setInExClusion( md, ( (IncludesArtifactFilter) af ).getPatterns(), true );
}
- else if( IncludesArtifactFilter.class.isAssignableFrom( af.getClass() ) )
- {
- setInExClusion( md, ((IncludesArtifactFilter)af).getPatterns(), true );
- }
}
return md;
}
@@ -246,21 +269,23 @@
public static Artifact toMavenArtifact( ArtifactFactory af, org.apache.maven.mercury.artifact.Artifact a )
{
boolean isTestJar = "test-jar".equals( a.getType() );
-
+
String type = isTestJar ? "jar" : a.getType();
-
+
String classifier = isTestJar ? "tests" : a.getClassifier();
-
- Artifact ma = classifier == null
- ? af.createArtifact( a.getGroupId(), a.getArtifactId(), a.getVersion(), a.getScope(), type )
- : af.createArtifactWithClassifier( a.getGroupId(), a.getArtifactId(), a.getVersion(), type, classifier )
- ;
+
+ Artifact ma =
+ classifier == null ? af.createArtifact( a.getGroupId(), a.getArtifactId(), a.getVersion(), a.getScope(),
+ type ) : af.createArtifactWithClassifier( a.getGroupId(),
+ a.getArtifactId(),
+ a.getVersion(), type,
+ classifier );
ma.setScope( a.getScope() );
-
+
ma.setFile( a.getFile() );
-
+
ma.setResolved( a.getFile() != null );
-
+
ma.setResolvedVersion( a.getVersion() );
return ma;
@@ -270,31 +295,35 @@
{
// MavenProject likes this one - replaces it with an actual test jar is available
// bad idea - embedder tests don't like it
-// boolean isTestJar = "jar".equals( a.getType() ) && "tests".equals( a.getClassifier() );
-//
-// String type = isTestJar ? "test-jar" : a.getType();
-
- Artifact ma = af.createArtifactWithClassifier( a.getGroupId(), a.getArtifactId(), a.getVersion(), a.getType(), a.getClassifier() );
+ // boolean isTestJar = "jar".equals( a.getType() ) && "tests".equals( a.getClassifier() );
+ //
+ // String type = isTestJar ? "test-jar" : a.getType();
+
+ Artifact ma =
+ af.createArtifactWithClassifier( a.getGroupId(), a.getArtifactId(), a.getVersion(), a.getType(),
+ a.getClassifier() );
ma.setScope( a.getScope() );
-
+
ma.setFile( a.getFile() );
-
+
ma.setResolved( a.getFile() != null );
-
+
ma.setResolvedVersion( a.getVersion() );
return ma;
}
-
+
public static Artifact toMavenArtifact( ArtifactFactory af, org.apache.maven.mercury.artifact.ArtifactMetadata a )
{
// MavenProject likes this one - replaces it with an actual test jar is available
// bad idea - embedder tests don't like it
-// boolean isTestJar = "jar".equals( a.getType() ) && "tests".equals( a.getClassifier() );
-//
-// String type = isTestJar ? "test-jar" : a.getType();
-
- Artifact ma = af.createArtifactWithClassifier( a.getGroupId(), a.getArtifactId(), a.getVersion(), a.getType(), a.getClassifier() );
+ // boolean isTestJar = "jar".equals( a.getType() ) && "tests".equals( a.getClassifier() );
+ //
+ // String type = isTestJar ? "test-jar" : a.getType();
+
+ Artifact ma =
+ af.createArtifactWithClassifier( a.getGroupId(), a.getArtifactId(), a.getVersion(), a.getType(),
+ a.getClassifier() );
ma.setScope( a.getScope() );
return ma;
@@ -305,20 +334,21 @@
* @param d
* @return
*/
- public static Artifact toMavenArtifact( ArtifactFactory af, Dependency a )
- {
- boolean isTestJar = "test-jar".equals( a.getType() );
-
- String type = isTestJar ? "jar" : a.getType();
-
- String classifier = isTestJar ? "tests" : a.getClassifier();
-
- Artifact ma = af.createArtifactWithClassifier( a.getGroupId(), a.getArtifactId(), a.getVersion(), type, classifier );
- ma.setScope( a.getScope() );
+// public static Artifact toMavenArtifact( ArtifactFactory af, Dependency a )
+// {
+// boolean isTestJar = "test-jar".equals( a.getType() );
+//
+// String type = isTestJar ? "jar" : a.getType();
+//
+// String classifier = isTestJar ? "tests" : a.getClassifier();
+//
+// Artifact ma =
+// af.createArtifactWithClassifier( a.getGroupId(), a.getArtifactId(), a.getVersion(), type, classifier );
+// ma.setScope( a.getScope() );
+//
+// return ma;
+// }
- return ma;
- }
-
public static ArtifactMetadata toMercuryArtifactMetadata( MavenArtifactMetadata md )
{
ArtifactMetadata mmd = new ArtifactMetadata();
@@ -327,8 +357,8 @@
mmd.setVersion( md.getVersion() );
mmd.setClassifier( md.getClassifier() );
mmd.setType( md.getType() );
-
- if( "test-jar".equals( md.getType() ) )
+
+ if ( "test-jar".equals( md.getType() ) )
{
mmd.setType( "jar" );
mmd.setClassifier( "tests" );
@@ -336,7 +366,7 @@
return mmd;
}
-
+
public static MavenArtifactMetadata toMavenArtifactMetadata( ArtifactMetadata md )
{
MavenArtifactMetadata mmd = new MavenArtifactMetadata();
@@ -345,8 +375,8 @@
mmd.setVersion( md.getVersion() );
mmd.setClassifier( md.getClassifier() );
mmd.setType( md.getType() );
-
- if( "test-jar".equals( md.getType() ) )
+
+ if ( "test-jar".equals( md.getType() ) )
{
mmd.setType( "jar" );
mmd.setClassifier( "tests" );
@@ -354,7 +384,7 @@
return mmd;
}
-
+
public static MavenArtifactMetadata toMavenArtifactMetadata( Artifact md )
{
MavenArtifactMetadata mmd = new MavenArtifactMetadata();
@@ -363,8 +393,8 @@
mmd.setVersion( md.getVersion() );
mmd.setClassifier( md.getClassifier() );
mmd.setType( md.getType() );
-
- if( "test-jar".equals( md.getType() ) )
+
+ if ( "test-jar".equals( md.getType() ) )
{
mmd.setType( "jar" );
mmd.setClassifier( "tests" );
@@ -372,87 +402,98 @@
return mmd;
}
-
+
public static MetadataGraph resolvedTreeToGraph( MetadataTreeNode root )
{
- if( root == null )
+ if ( root == null )
return null;
-
+
MetadataGraphNode entry = new MetadataGraphNode( toMavenArtifactMetadata( root.getMd() ) );
-
- MetadataGraph graph = new MetadataGraph(entry);
-
+
+ MetadataGraph graph = new MetadataGraph( entry );
+
graph.addNode( entry );
-
+
addKids( root, entry, graph );
-
+
return graph;
}
-
+
private static final void addKids( MetadataTreeNode tParent, MetadataGraphNode gParent, MetadataGraph graph )
{
- if( !tParent.hasChildren() )
+ if ( !tParent.hasChildren() )
return;
-
- for( MetadataTreeNode kid : tParent.getChildren() )
+
+ for ( MetadataTreeNode kid : tParent.getChildren() )
{
MavenArtifactMetadata mmd = toMavenArtifactMetadata( kid.getMd() );
-
+
MetadataGraphNode node = graph.findNode( mmd );
-
+
node.addIncident( gParent );
-
+
gParent.addIncident( node );
-
+
addKids( kid, node, graph );
}
}
/**
- * @param reqArtifact
- * @param isPlugin
+ * @param reqArtifact
* @param filter
* @return
*/
- public static ArtifactScopeEnum extractScope( Artifact reqArtifact, boolean isPlugin, ArtifactFilter filter )
+ public static ArtifactScopeEnum extractScope( Artifact reqArtifact, ArtifactFilter filter )
{
- String scopeStr = reqArtifact.getScope() == null
- ? org.apache.maven.mercury.artifact.Artifact.SCOPE_COMPILE
- : reqArtifact.getScope()
- ;
+ String scopeStr =
+ reqArtifact.getScope() == null ? org.apache.maven.mercury.artifact.Artifact.SCOPE_COMPILE
+ : reqArtifact.getScope();
- if( filter != null )
+ System.out.println("Scope 1: "+scopeStr);
+
+ if ( filter != null )
{
- if( ScopeArtifactFilter.class.isAssignableFrom( filter.getClass() ) )
- scopeStr = ((ScopeArtifactFilter)filter).getScope();
+ if ( ScopeArtifactFilter.class.isAssignableFrom( filter.getClass() ) )
+ {
+ scopeStr = ( (ScopeArtifactFilter) filter ).getScope();
+
+System.out.println("Scope 2: "+scopeStr);
+
+ if( scopeStr == null )
+ scopeStr = org.apache.maven.mercury.artifact.Artifact.SCOPE_COMPILE;
+
+System.out.println("Scope 3: "+scopeStr);
+ }
}
-// else if( isPlugin )
-// scopeStr = org.apache.maven.mercury.artifact.Artifact.SCOPE_RUNTIME;
-
- if( scopeStr != null )
+
+ if ( scopeStr != null )
{
- if( org.apache.maven.mercury.artifact.Artifact.SCOPE_COMPILE.equals( scopeStr ) )
+ if ( org.apache.maven.mercury.artifact.Artifact.SCOPE_COMPILE.equals( scopeStr ) )
return ArtifactScopeEnum.compile;
- else if( org.apache.maven.mercury.artifact.Artifact.SCOPE_TEST.equals( scopeStr ) )
+ else if ( org.apache.maven.mercury.artifact.Artifact.SCOPE_TEST.equals( scopeStr ) )
return ArtifactScopeEnum.test;
- else if( org.apache.maven.mercury.artifact.Artifact.SCOPE_PROVIDED.equals( scopeStr ) )
+ else if ( org.apache.maven.mercury.artifact.Artifact.SCOPE_PROVIDED.equals( scopeStr ) )
return ArtifactScopeEnum.provided;
- else if( org.apache.maven.mercury.artifact.Artifact.SCOPE_RUNTIME.equals( scopeStr ) )
+ else if ( org.apache.maven.mercury.artifact.Artifact.SCOPE_RUNTIME.equals( scopeStr ) )
return ArtifactScopeEnum.runtime;
- else if( Artifact.SCOPE_RUNTIME_PLUS_SYSTEM.equals( scopeStr ) )
+ else if ( Artifact.SCOPE_RUNTIME_PLUS_SYSTEM.equals( scopeStr ) )
return ArtifactScopeEnum.runtime;
- else if( org.apache.maven.mercury.artifact.Artifact.SCOPE_SYSTEM.equals( scopeStr ) )
+ else if ( org.apache.maven.mercury.artifact.Artifact.SCOPE_SYSTEM.equals( scopeStr ) )
return ArtifactScopeEnum.system;
}
+System.out.println("Scope 4: null");
+
return null;
}
- static Map<String,ArtifactMetadata> _hackMap = new HashMap<String, ArtifactMetadata>();
+
+ static Map<String, ArtifactMetadata> _hackMap = new HashMap<String, ArtifactMetadata>();
+
static int _hackMapSize = 0;
- static
+ static
{
ArtifactMetadata md;
-
+
md = new ArtifactMetadata( "cglib-nodep:cglib-nodep:2.1_3" );
md.setOptional( true );
_hackMap.put( md.toManagementString(), md );
@@ -464,24 +505,24 @@
_hackMapSize = _hackMap.size();
}
- public static Map<String,ArtifactMetadata> toMercuryVersionMap(ArtifactResolutionRequest request )
+ public static Map<String, ArtifactMetadata> toMercuryVersionMap( ArtifactResolutionRequest request )
{
- Map<String,Artifact> vmap = (Map<String,Artifact>)request.getManagedVersionMap();
-
- if( Util.isEmpty( vmap ) )
+ Map<String, Artifact> vmap = (Map<String, Artifact>) request.getManagedVersionMap();
+
+ if ( Util.isEmpty( vmap ) )
return null;
-
- Map<String,ArtifactMetadata> res = new HashMap<String, ArtifactMetadata>( vmap.size()+_hackMapSize );
-
-// res.putAll( _hackMap );
-
- for( Entry<String, Artifact> e : vmap.entrySet() )
+
+ Map<String, ArtifactMetadata> res = new HashMap<String, ArtifactMetadata>( vmap.size() + _hackMapSize );
+
+ // res.putAll( _hackMap );
+
+ for ( Entry<String, Artifact> e : vmap.entrySet() )
{
ArtifactMetadata md = toMercuryMetadata( e.getValue() );
-
+
res.put( e.getKey(), md );
}
-
+
return res;
}
Modified: maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryRepositorySystem.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryRepositorySystem.java?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryRepositorySystem.java (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryRepositorySystem.java Wed Apr 29 06:10:16 2009
@@ -67,6 +67,9 @@
extends LegacyRepositorySystem
implements RepositorySystem
{
+
+ public static boolean traceMe = false;
+
private static final Language LANG = new DefaultLanguage( MercuryRepositorySystem.class );
private Map<String, Set<Artifact> > _resolutions = Collections.synchronizedMap( new HashMap<String, Set<Artifact>>(128) );
@@ -86,8 +89,6 @@
@Requirement
private Logger _logger;
- private boolean _reactorInitialized = false;
-
@Override
public ArtifactResolutionResult resolve( ArtifactResolutionRequest request )
{
@@ -100,16 +101,10 @@
ArtifactResolutionResult result = new ArtifactResolutionResult();
String requestKey = null;
-
- if( !_reactorInitialized )
- {
- MercuryAdaptor.initializeReactor( _reactorRepository, _dependencyProcessor );
-
- _reactorInitialized = true;
- }
List<Repository> repos =
- MercuryAdaptor.toMercuryRepos( request.getLocalRepository()
+ MercuryAdaptor.toMercuryRepos( _reactorRepository
+ , request.getLocalRepository()
, request.getRemoteRepostories()
, _dependencyProcessor
);
@@ -118,6 +113,8 @@
ArtifactFilter filter = request.getFilter();
+_logger.setThreshold( Logger.LEVEL_DEBUG );
+
try
{
@@ -131,7 +128,7 @@
boolean isPlugin = "maven-plugin".equals( rootArtifact.getType() );
- ArtifactScopeEnum scope = MercuryAdaptor.extractScope( rootArtifact, isPlugin, request.getFilter() );
+ ArtifactScopeEnum scope = MercuryAdaptor.extractScope( rootArtifact, filter );
if( _logger.isDebugEnabled() )
{
@@ -151,7 +148,6 @@
}
Map<String, ArtifactMetadata> versionMap = MercuryAdaptor.toMercuryVersionMap( request );
-
if( isPlugin )
{
@@ -190,9 +186,17 @@
// cannot just replace the type. Besides - Maven expects the same object out
org.apache.maven.artifact.Artifact root = isPlugin ? mavenPluginArtifact : rootArtifact;
+//
+//if( "org.apache.maven".equals( root.getGroupId() )
+// && "maven-model".equals( root.getArtifactId() )
+// && "pom".equals( root.getType() )
+// && "1.0".equals( root.getVersion() )
+//)
+//{
+// System.out.println("Bingo!");
+//}
- // firstly - deal with the root
- // copied from artifact resolver
+ // first - deal with the root. Code copied from DefaultArtifactResolver
if ( request.isResolveRoot() && rootArtifact.getFile() == null && Util.isEmpty( artifacts ) )
{
try
@@ -249,77 +253,41 @@
// query for mercury
List<ArtifactMetadata> query = new ArrayList<ArtifactMetadata>( artifacts.size() + 1 );
-
- if( request.isResolveRoot() && rootArtifact.getFile() == null )
+ if( request.isResolveRoot() && root.getFile() == null )
{
- if( root.isResolved() )
- {
- resolvedList.add( root );
- globalExclusions.add( rootMd );
- }
- else
+// if( root.isResolved() )
+// {
+// resolvedList.add( root );
+// globalExclusions.add( rootMd );
+//if( _logger.isDebugEnabled() )
+//{
+// _logger.debug( "added root "+root+" to resolved list" );
+//}
+// }
+// else
query.add( rootMd );
}
-
- // TODO - are activeProjectDependencies here rightly ??
- // add dependencies of actives to the original request list
- List<Artifact> activeDependencies = new ArrayList<Artifact>();
-
+// else
+// {
+// resolvedList.add( root );
+// globalExclusions.add( rootMd );
+//if( _logger.isDebugEnabled() )
+//{
+// _logger.debug( "Don't resolve root: added root "+root+" to resolved list" );
+//}
+// }
+
+ // decide - what goes to query vs. already resolved
for( Artifact a : artifacts )
{
-// if( a.isResolved() && DependencyHolder.class.isAssignableFrom( a.getClass() ) )
+// if( a.isResolved() )
// {
-// DependencyHolder apa = (DependencyHolder) a;
-// List<Dependency> deps = apa.getDependencyList();
-// if( deps != null )
-// for( Dependency d : deps )
-// activeDependencies.add( MercuryAdaptor.toMavenArtifact( _artifactFactory, d ) );
+// resolvedList.add( a );
+// // don't resolve again
+// globalExclusions.add( MercuryAdaptor.toMercuryMetadata( a ) );
// }
- }
-
- //
- // daddy Jason does not do that,
- // but they are very important - cannot build correct classpath
- // without them. The correct way to add them is:
- // - grab the active's POM
- // - create a local map repository for each POM
- // - add a POM to the metadata list (be re resolved from map repo)
- // - remove POMs from final result
- // - add original active's instead
- //
- // TODO replace this HACK
- //due to the lack of time - hacking up a solution: add all them to the dependency list,
- // but this approach looses the depth and causes problems:
- // if active depends on junit 4.4 and root depends on 3.8.1 - 4.4 wins, while it should not
- // trying to mitigate it by adding only non-existent GAs
- if( activeDependencies.size() > 0 )
- {
- for( Artifact a : activeDependencies )
- if( gaDoesNotExist(a,artifacts) )
- {
- if( isGood( filter, a ) )
- {
- artifacts.add( a );
-
- if( _logger.isDebugEnabled() )
- _logger.debug( " ------ active's dep --> "+a );
- }
- }
-
- }
-
-
- // decide - what goes to query vs. already resolved
- for( Artifact a : artifacts )
- {
- if( a.isResolved() )
- {
- resolvedList.add( a );
- // don't resolve again
- globalExclusions.add( MercuryAdaptor.toMercuryMetadata( a ) );
- }
- else
+// else
query.add( MercuryAdaptor.toMercuryMetadata( a ) );
}
@@ -332,15 +300,15 @@
showMdList( mercuryMetadataList, " <.. md by mercury ...... " );
}
- // no metadata resolved and nothing pre-resolved
+ // no metadata resolved in the scope and nothing pre-resolved
if( Util.isEmpty( mercuryMetadataList ) && Util.isEmpty( resolvedList ) )
{
- result.addMissingArtifact( rootArtifact );
+// result.addMissingArtifact( rootArtifact );
long diff = System.currentTimeMillis() - start;
if( _logger.isDebugEnabled() )
- _logger.debug("mercury: missing artifact("+diff+") "+rootArtifact+"("+scope+")"+"\n<===========\n" );
+ _logger.debug("mercury: artifact("+diff+" ms) "+rootArtifact+"("+scope+")"+"\n<===========\n" );
return result;
}
@@ -354,7 +322,7 @@
showAList( mercuryArtifactList, " <__ bin. by mercury ____ " );
}
- // ActiveProjectArtifacts - add the to the result before the rest
+ // Resolved - add the to the result before the rest
for( Artifact a : resolvedList )
{
result.addArtifact( a );
@@ -409,13 +377,13 @@
_logger.debug("\n<==========================================\n");
}
- if( requestKey != null )
- _resolutions.put( requestKey, resSet );
-
+ if( requestKey != null )
+ _resolutions.put( requestKey, resSet );
}
- else
+
+ if( Util.isEmpty( result.getArtifacts() ) )
{
- result.addMissingArtifact( rootArtifact );
+// result.addMissingArtifact( rootArtifact );
long diff = System.currentTimeMillis() - start;
if( _logger.isDebugEnabled() )
@@ -568,7 +536,9 @@
throw new IllegalArgumentException( LANG.getMessage( "null.request.artifact" ) );
List<Repository> repos =
- MercuryAdaptor.toMercuryRepos( request.getLocalRepository()
+ MercuryAdaptor.toMercuryRepos(
+ _reactorRepository
+ , request.getLocalRepository()
, request.getRemoteRepostories()
, _dependencyProcessor
);
Modified: maven/components/branches/maven-3.0-mercury-763966/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java (original)
+++ maven/components/branches/maven-3.0-mercury-763966/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java Wed Apr 29 06:10:16 2009
@@ -59,7 +59,7 @@
/**
* @author Jason van Zyl
*/
-@Component( role = RepositorySystem.class, hint = "default" )
+@Component( role = RepositorySystem.class, hint = "legacy" )
public class LegacyRepositorySystem
implements RepositorySystem
{
@@ -374,11 +374,6 @@
public ArtifactResolutionResult resolve( ArtifactResolutionRequest request )
{
-
-if(request.getRemoteRepostories() != null && request.getRemoteRepostories().size() > 10 )
-{
- System.out.println("legacy: request with "+request.getRemoteRepostories().size()+" remote repositories" );
-}
ArtifactResolutionResult res = artifactResolver.resolve( request );
return res;
Modified: maven/components/branches/maven-3.0-mercury-763966/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-3.0-mercury-763966/pom.xml?rev=769672&r1=769671&r2=769672&view=diff
==============================================================================
--- maven/components/branches/maven-3.0-mercury-763966/pom.xml (original)
+++ maven/components/branches/maven-3.0-mercury-763966/pom.xml Wed Apr 29 06:10:16 2009
@@ -235,6 +235,7 @@
</pluginManagement>
</build>
<modules>
+<!--
<module>maven-core</module>
<module>apache-maven</module>
<module>maven-lifecycle</module>
@@ -244,11 +245,12 @@
<module>maven-reporting-api</module>
<module>maven-project-builder</module>
<module>maven-mercury</module>
- <module>maven-embedder</module>
<module>maven-toolchain</module>
<module>maven-compat</module>
<module>maven-repository</module>
+ -->
<module>maven-repository-mercury</module>
+ <module>maven-embedder</module>
</modules>
<!--start-->
<dependencies>