You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/09/17 15:26:10 UTC
svn commit: r816180 - in /maven/maven-3/trunk:
maven-compat/src/main/java/org/apache/maven/artifact/repository/
maven-compat/src/main/java/org/apache/maven/repository/
maven-core/src/main/java/org/apache/maven/
maven-core/src/main/java/org/apache/maven...
Author: bentmann
Date: Thu Sep 17 13:26:10 2009
New Revision: 816180
URL: http://svn.apache.org/viewvc?rev=816180&view=rev
Log:
[MNG-4048] Allow to resolve dependencies using version range from reactor
Modified:
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/MavenArtifactRepository.java
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/DelegatingLocalArtifactRepository.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorArtifactRepository.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java?rev=816180&r1=816179&r2=816180&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java Thu Sep 17 13:26:10 2009
@@ -15,6 +15,8 @@
* the License.
*/
+import java.util.List;
+
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
@@ -64,7 +66,15 @@
// New interface methods for the repository system.
//
Artifact find( Artifact artifact );
-
+
+ /**
+ * Finds the versions of the specified artifact that are available in this repository.
+ *
+ * @param artifact The artifact whose available versions should be determined, must not be {@code null}.
+ * @return The available versions of the artifact or an empty list if none, never {@code null}.
+ */
+ List<String> findVersions( Artifact artifact );
+
void setAuthentication( Authentication authentication );
Authentication getAuthentication();
Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java?rev=816180&r1=816179&r2=816180&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java Thu Sep 17 13:26:10 2009
@@ -20,6 +20,8 @@
*/
import java.io.File;
+import java.util.Collections;
+import java.util.List;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
@@ -205,6 +207,11 @@
return artifact;
}
+ public List<String> findVersions( Artifact artifact )
+ {
+ return Collections.emptyList();
+ }
+
//
// This implementation does not support authentication
//
Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/MavenArtifactRepository.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/MavenArtifactRepository.java?rev=816180&r1=816179&r2=816180&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/MavenArtifactRepository.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/MavenArtifactRepository.java Thu Sep 17 13:26:10 2009
@@ -20,6 +20,8 @@
*/
import java.io.File;
+import java.util.Collections;
+import java.util.List;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
@@ -159,6 +161,11 @@
return artifact;
}
+ public List<String> findVersions( Artifact artifact )
+ {
+ return Collections.emptyList();
+ }
+
public String getId()
{
return id;
Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/DelegatingLocalArtifactRepository.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/DelegatingLocalArtifactRepository.java?rev=816180&r1=816179&r2=816180&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/DelegatingLocalArtifactRepository.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/DelegatingLocalArtifactRepository.java Thu Sep 17 13:26:10 2009
@@ -19,6 +19,12 @@
* under the License.
*/
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.List;
+
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -80,6 +86,26 @@
return artifact;
}
+ @Override
+ public List<String> findVersions( Artifact artifact )
+ {
+ Collection<String> versions = new LinkedHashSet<String>();
+
+ if ( buildReactor != null )
+ {
+ versions.addAll( buildReactor.findVersions( artifact ) );
+ }
+
+ if ( ideWorkspace != null )
+ {
+ versions.addAll( ideWorkspace.findVersions( artifact ) );
+ }
+
+ versions.addAll( userLocalArtifactRepository.findVersions( artifact ) );
+
+ return Collections.unmodifiableList( new ArrayList<String>( versions ) );
+ }
+
public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository )
{
return userLocalArtifactRepository.pathOfLocalRepositoryMetadata( metadata, repository );
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorArtifactRepository.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorArtifactRepository.java?rev=816180&r1=816179&r2=816180&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorArtifactRepository.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorArtifactRepository.java Thu Sep 17 13:26:10 2009
@@ -1,7 +1,11 @@
package org.apache.maven;
import java.io.File;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.maven.artifact.Artifact;
@@ -24,6 +28,8 @@
{
private Map<String, MavenProject> reactorProjects;
+ private Map<String, List<String>> availableVersions;
+
private MavenExecutionResult executionResult;
private final int hashCode;
@@ -33,6 +39,22 @@
this.reactorProjects = reactorProjects;
this.executionResult = ( session != null ) ? session.getResult() : null;
hashCode = ( reactorProjects != null ) ? reactorProjects.keySet().hashCode() : 0;
+
+ availableVersions = new HashMap<String, List<String>>( reactorProjects.size() * 2 );
+ for ( MavenProject project : reactorProjects.values() )
+ {
+ String key = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() );
+
+ List<String> versions = availableVersions.get( key );
+
+ if ( versions == null )
+ {
+ versions = new ArrayList<String>( 1 );
+ availableVersions.put( key, versions );
+ }
+
+ versions.add( project.getVersion() );
+ }
}
@Override
@@ -96,6 +118,16 @@
}
@Override
+ public List<String> findVersions( Artifact artifact )
+ {
+ String key = ArtifactUtils.versionlessKey( artifact );
+
+ List<String> versions = availableVersions.get( key );
+
+ return ( versions != null ) ? Collections.unmodifiableList( versions ) : Collections.<String> emptyList();
+ }
+
+ @Override
public String getId()
{
return "reactor";
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=816180&r1=816179&r2=816180&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Thu Sep 17 13:26:10 2009
@@ -18,6 +18,7 @@
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -401,13 +402,16 @@
throw new ArtifactMetadataRetrievalException( e.getMessage(), e, request.getArtifact() );
}
- return retrieveAvailableVersionsFromMetadata( metadata.getMetadata() );
+ List<String> availableVersions = request.getLocalRepository().findVersions( request.getArtifact() );
+
+ return retrieveAvailableVersionsFromMetadata( metadata.getMetadata(), availableVersions );
}
public List<ArtifactVersion> retrieveAvailableVersionsFromDeploymentRepository( Artifact artifact, ArtifactRepository localRepository, ArtifactRepository deploymentRepository )
throws ArtifactMetadataRetrievalException
{
RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
+
try
{
repositoryMetadataManager.resolveAlways( metadata, localRepository, deploymentRepository );
@@ -417,30 +421,30 @@
throw new ArtifactMetadataRetrievalException( e.getMessage(), e, artifact );
}
- return retrieveAvailableVersionsFromMetadata( metadata.getMetadata() );
+ List<String> availableVersions = localRepository.findVersions( artifact );
+
+ return retrieveAvailableVersionsFromMetadata( metadata.getMetadata(), availableVersions );
}
- private List<ArtifactVersion> retrieveAvailableVersionsFromMetadata( Metadata repoMetadata )
+ private List<ArtifactVersion> retrieveAvailableVersionsFromMetadata( Metadata repoMetadata, List<String> availableVersions )
{
- List<ArtifactVersion> versions;
+ Collection<String> versions = new LinkedHashSet<String>();
if ( ( repoMetadata != null ) && ( repoMetadata.getVersioning() != null ) )
{
- List<String> metadataVersions = repoMetadata.getVersioning().getVersions();
+ versions.addAll( repoMetadata.getVersioning().getVersions() );
+ }
- versions = new ArrayList<ArtifactVersion>( metadataVersions.size() );
+ versions.addAll( availableVersions );
- for ( String version : metadataVersions )
- {
- versions.add( new DefaultArtifactVersion( version ) );
- }
- }
- else
+ List<ArtifactVersion> artifactVersions = new ArrayList<ArtifactVersion>( versions.size() );
+
+ for ( String version : versions )
{
- versions = Collections.<ArtifactVersion> emptyList();
+ artifactVersions.add( new DefaultArtifactVersion( version ) );
}
- return versions;
+ return artifactVersions;
}
// USED BY MAVEN ASSEMBLY PLUGIN