You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2009/05/27 21:45:33 UTC
svn commit: r779283 - in /maven/components/branches/MNG-2766:
maven-compat/src/main/java/org/apache/maven/artifact/
maven-compat/src/main/java/org/apache/maven/artifact/metadata/
maven-compat/src/main/java/org/apache/maven/artifact/resolver/ maven-comp...
Author: jvanzyl
Date: Wed May 27 19:45:32 2009
New Revision: 779283
URL: http://svn.apache.org/viewvc?rev=779283&view=rev
Log:
o make a separate project dependencies downloader where the scope and exclusions can be taken into account
Added:
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java (with props)
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java (with props)
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java (with props)
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java (with props)
maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/
maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/project-with-exclusions/
maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/project-with-exclusions/pom.xml (with props)
Modified:
maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java
maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java
maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java
maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/deployer/SimpleArtifactMetadataSource.java
maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/metadata/TestMetadataSource.java
maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
maven/components/branches/MNG-2766/maven-core/src/main/resources/META-INF/plexus/components.xml
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/TestMetadataSource.java
Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java Wed May 27 19:45:32 2009
@@ -78,9 +78,14 @@
private List<ArtifactVersion> availableVersions;
private Map<Object,ArtifactMetadata> metadataMap;
-
+
private boolean optional;
+ public DefaultArtifact( String groupId, String artifactId, String version, String scope, String type, String classifier, ArtifactHandler artifactHandler )
+ {
+ this( groupId, artifactId, VersionRange.createFromVersion( version ), scope, type, classifier, artifactHandler, false );
+ }
+
public DefaultArtifact( String groupId, String artifactId, VersionRange versionRange, String scope, String type, String classifier, ArtifactHandler artifactHandler )
{
this( groupId, artifactId, versionRange, scope, type, classifier, artifactHandler, false );
Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadataSource.java Wed May 27 19:45:32 2009
@@ -23,6 +23,7 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.versioning.ArtifactVersion;
/**
Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java Wed May 27 19:45:32 2009
@@ -505,7 +505,7 @@
// We want to send the root artifact back in the result but we need to do this after the other dependencies
// have been resolved.
if ( request.isResolveRoot() )
- {
+ {
// Add the root artifact (as the first artifact to retain logical order of class path!)
Set<Artifact> allArtifacts = new LinkedHashSet<Artifact>();
allArtifacts.add( rootArtifact );
Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java Wed May 27 19:45:32 2009
@@ -83,7 +83,7 @@
public void addDependencies( Set<Artifact> artifacts, List<ArtifactRepository> remoteRepositories, ArtifactFilter filter )
throws CyclicDependencyException, OverConstrainedVersionException
{
- if ( !artifacts.isEmpty() )
+ if ( artifacts != null && !artifacts.isEmpty() )
{
children = new ArrayList<ResolutionNode>( artifacts.size() );
Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java Wed May 27 19:45:32 2009
@@ -34,8 +34,17 @@
public class AndArtifactFilter
implements ArtifactFilter
{
- private final List<ArtifactFilter> filters = new ArrayList<ArtifactFilter>();
+ private List<ArtifactFilter> filters;
+ public AndArtifactFilter()
+ {
+ }
+
+ public AndArtifactFilter( List<ArtifactFilter> filters )
+ {
+ this.filters = filters;
+ }
+
public boolean include( Artifact artifact )
{
boolean include = true;
@@ -52,6 +61,11 @@
public void add( ArtifactFilter artifactFilter )
{
+ if ( filters == null )
+ {
+ filters = new ArrayList<ArtifactFilter>();
+ }
+
filters.add( artifactFilter );
}
}
Modified: maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/deployer/SimpleArtifactMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/deployer/SimpleArtifactMetadataSource.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/deployer/SimpleArtifactMetadataSource.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/deployer/SimpleArtifactMetadataSource.java Wed May 27 19:45:32 2009
@@ -27,6 +27,7 @@
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.metadata.ResolutionGroup;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
Modified: maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/metadata/TestMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/metadata/TestMetadataSource.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/metadata/TestMetadataSource.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/metadata/TestMetadataSource.java Wed May 27 19:45:32 2009
@@ -7,6 +7,7 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
Modified: maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java Wed May 27 19:45:32 2009
@@ -33,6 +33,7 @@
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.metadata.ResolutionGroup;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.versioning.ArtifactVersion;
// It would be cool if there was a hook that i could use to setup a test environment.
Added: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java?rev=779283&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java (added)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java Wed May 27 19:45:32 2009
@@ -0,0 +1,79 @@
+package org.apache.maven;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+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.ArtifactResolutionRequest;
+import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
+import org.apache.maven.artifact.resolver.ResolutionErrorHandler;
+import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Exclusion;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.artifact.ProjectArtifact;
+import org.apache.maven.repository.RepositorySystem;
+import org.codehaus.plexus.component.annotations.Component;
+import org.codehaus.plexus.component.annotations.Requirement;
+
+@Component(role=ProjectDependenciesResolver.class)
+public class DefaultProjectDependenciesResolver
+ implements ProjectDependenciesResolver
+{
+ @Requirement
+ private RepositorySystem repositorySystem;
+
+ @Requirement
+ private ResolutionErrorHandler resolutionErrorHandler;
+
+ public Set<Artifact> resolve( MavenProject project, String scope, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
+ throws ArtifactResolutionException, ArtifactNotFoundException
+ {
+ List<String> exclusions = new ArrayList<String>();
+
+ for ( Dependency d : project.getDependencies() )
+ {
+ if ( d.getExclusions() != null )
+ {
+ for ( Exclusion e : d.getExclusions() )
+ {
+ exclusions.add( e.getGroupId() + ":" + e.getArtifactId() );
+ }
+ }
+ }
+
+ ArtifactFilter scopeFilter = new ScopeArtifactFilter( scope );
+
+ ArtifactFilter filter;
+
+ if ( exclusions != null )
+ {
+ filter = new AndArtifactFilter( Arrays.asList( new ArtifactFilter[]{ new ExcludesArtifactFilter( exclusions ), scopeFilter } ) );
+ }
+ else
+ {
+ filter = scopeFilter;
+ }
+
+ ArtifactResolutionRequest request = new ArtifactResolutionRequest()
+ .setArtifact( new ProjectArtifact( project ) )
+ .setResolveRoot( false )
+ .setResolveTransitively( true )
+ .setLocalRepository( localRepository )
+ .setRemoteRepostories( remoteRepositories )
+ .setManagedVersionMap( project.getManagedVersionMap() )
+ .setFilter( filter );
+
+ ArtifactResolutionResult result = repositorySystem.resolve( request );
+ resolutionErrorHandler.throwErrors( request, result );
+ return result.getArtifacts();
+ }
+}
Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java?rev=779283&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java (added)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java Wed May 27 19:45:32 2009
@@ -0,0 +1,16 @@
+package org.apache.maven;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+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.project.MavenProject;
+
+public interface ProjectDependenciesResolver
+{
+ public Set<Artifact> resolve( MavenProject project, String scope, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
+ throws ArtifactResolutionException, ArtifactNotFoundException;
+}
Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Wed May 27 19:45:32 2009
@@ -29,6 +29,7 @@
import java.util.Set;
import java.util.StringTokenizer;
+import org.apache.maven.ProjectDependenciesResolver;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.metadata.Metadata;
@@ -36,11 +37,6 @@
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
-import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
-import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
-import org.apache.maven.artifact.resolver.ResolutionErrorHandler;
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.lifecycle.mapping.LifecycleMapping;
import org.apache.maven.model.Plugin;
@@ -95,9 +91,6 @@
@Requirement
protected RepositorySystem repositorySystem;
- @Requirement
- private ResolutionErrorHandler resolutionErrorHandler;
-
/**
* These mappings correspond to packaging types, like WAR packaging, which configure a particular mojos
* to run in a given phase.
@@ -105,6 +98,9 @@
@Requirement
private Map<String, LifecycleMapping> lifecycleMappings;
+ @Requirement
+ private ProjectDependenciesResolver projectDependenciesResolver;
+
// @Configuration(source="org/apache/maven/lifecycle/lifecycles.xml")
private List<Lifecycle> lifecycles;
@@ -168,7 +164,8 @@
// mojoDescriptor.isDependencyResolutionRequired() is actually the scope of the dependency resolution required, not a boolean ... yah.
try
{
- downloadProjectDependencies( session, executionPlan.getRequiredResolutionScope() );
+ Set<Artifact> projectDependencies = projectDependenciesResolver.resolve( currentProject, executionPlan.getRequiredResolutionScope(), session.getLocalRepository(), currentProject.getRemoteArtifactRepositories() );
+ currentProject.setArtifacts( projectDependencies );
}
catch ( ArtifactNotFoundException e )
{
@@ -881,31 +878,7 @@
return dom;
}
-
- private void downloadProjectDependencies( MavenSession session, String scope )
- throws ArtifactResolutionException, ArtifactNotFoundException
- {
- MavenProject project = session.getCurrentProject();
-
- Artifact artifact = repositorySystem.createProjectArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion() );
- artifact.setFile( project.getFile() );
-
- ArtifactFilter filter = new ScopeArtifactFilter( scope );
-
- ArtifactResolutionRequest request = new ArtifactResolutionRequest()
- .setArtifact( artifact )
- .setResolveRoot( false )
- .setResolveTransitively( true )
- .setLocalRepository( session.getLocalRepository() )
- .setRemoteRepostories( project.getRemoteArtifactRepositories() )
- .setManagedVersionMap( project.getManagedVersionMap() )
- .setFilter( filter );
-
- ArtifactResolutionResult result = repositorySystem.resolve( request );
- resolutionErrorHandler.throwErrors( request, result );
- project.setArtifacts( result.getArtifacts() );
- }
-
+
private Map<String,Plugin> pluginPrefixes = new HashMap<String,Plugin>();
//TODO: take repo mans into account as one may be aggregating prefixes of many
Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java Wed May 27 19:45:32 2009
@@ -32,6 +32,7 @@
import org.apache.maven.plugin.PluginDescriptorParsingException;
import org.apache.maven.plugin.PluginNotFoundException;
import org.apache.maven.plugin.PluginResolutionException;
+import org.apache.maven.project.MavenProject;
/**
* @author Jason van Zyl
Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Wed May 27 19:45:32 2009
@@ -23,6 +23,7 @@
import java.util.List;
import java.util.Map;
+import org.apache.maven.ProjectDependenciesResolver;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.ArtifactUtils;
import org.apache.maven.artifact.InvalidRepositoryException;
@@ -50,6 +51,7 @@
import org.apache.maven.model.profile.ProfileInjector;
import org.apache.maven.model.profile.ProfileSelector;
import org.apache.maven.profiles.ProfileManager;
+import org.apache.maven.project.artifact.ProjectArtifact;
import org.apache.maven.project.validation.ModelValidationResult;
import org.apache.maven.project.validation.ModelValidator;
import org.apache.maven.repository.RepositorySystem;
@@ -113,6 +115,9 @@
@Requirement
private MavenProjectCache projectCache;
+ @Requirement
+ private ProjectDependenciesResolver projectDependenciesResolver;
+
private MavenProject superProject;
// ----------------------------------------------------------------------
@@ -326,9 +331,8 @@
{
MavenProject project = build( pomFile, configuration );
- Artifact artifact = repositorySystem.createProjectArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion() );
- artifact.setFile( pomFile );
-
+ Artifact artifact = new ProjectArtifact( project );
+
ArtifactResolutionRequest request = new ArtifactResolutionRequest()
.setArtifact( artifact )
.setResolveRoot( false )
Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Wed May 27 19:45:32 2009
@@ -58,7 +58,6 @@
@Requirement
private RepositoryMetadataManager repositoryMetadataManager;
- //TODO: this will also cause a cycle so we need to refactor some code
@Requirement
private ArtifactFactory repositorySystem;
@@ -68,78 +67,93 @@
@Requirement
private PlexusContainer container;
-
+
@Requirement
private Logger logger;
public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
throws ArtifactMetadataRetrievalException
{
- Artifact pomArtifact = repositorySystem.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
+ MavenProject project;
+
+ Artifact pomArtifact;
- if ( "pom".equals( artifact.getType() ) )
+ //TODO: Not even sure this is really required as the project will be cached in the builder, we'll see this
+ // is currently the biggest hotspot
+ if ( artifact instanceof ProjectArtifact )
{
- pomArtifact.setFile( artifact.getFile() );
+ pomArtifact = artifact;
+
+ project = ((ProjectArtifact)artifact).getProject();
}
+ else
+ {
+ pomArtifact = repositorySystem.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
- Set<Artifact> artifacts = Collections.emptySet();
+ if ( "pom".equals( artifact.getType() ) )
+ {
+ pomArtifact.setFile( artifact.getFile() );
+ }
- ProjectBuilderConfiguration configuration = new DefaultProjectBuilderConfiguration();
- configuration.setLocalRepository( localRepository );
- configuration.setRemoteRepositories( remoteRepositories );
- configuration.setLenientValidation( true );
- // We don't care about processing plugins here, all we're interested in is the dependencies.
- configuration.setProcessPlugins( false );
- // FIXME: We actually need the execution properties here...
- configuration.setExecutionProperties( System.getProperties() );
+ ProjectBuilderConfiguration configuration = new DefaultProjectBuilderConfiguration();
+ configuration.setLocalRepository( localRepository );
+ configuration.setRemoteRepositories( remoteRepositories );
+ configuration.setLenientValidation( true );
+ // We don't care about processing plugins here, all we're interested in is the dependencies.
+ configuration.setProcessPlugins( false );
+ // FIXME: We actually need the execution properties here...
+ configuration.setExecutionProperties( System.getProperties() );
- MavenProject project;
+ try
+ {
+ project = getProjectBuilder().buildFromRepository( pomArtifact, configuration );
+ }
+ catch ( ProjectBuildingException e )
+ {
+ // When this happens we have a Maven 1.x POM, or some invalid POM. There is still a pile of
+ // shit in the Maven 2.x repository that should have never found its way into the repository
+ // but it did.
+ logger.debug( "Failed to resolve artifact dependencies: " + e.getMessage() );
+
+ return new ResolutionGroup( pomArtifact, Collections.<Artifact>emptySet(), remoteRepositories );
+ }
+ }
- try
+ Set<Artifact> artifacts = Collections.<Artifact>emptySet();
+
+ if ( !artifact.getArtifactHandler().isIncludesDependencies() )
{
- project = getProjectBuilder().buildFromRepository( pomArtifact, configuration );
+ artifacts = new LinkedHashSet<Artifact>();
- if ( !artifact.getArtifactHandler().isIncludesDependencies() )
+ for ( Dependency d : project.getDependencies() )
{
- artifacts = new LinkedHashSet<Artifact>();
+ String effectiveScope = getEffectiveScope( d.getScope(), artifact.getScope() );
- for ( Dependency d : project.getDependencies() )
+ if ( effectiveScope != null )
{
- String effectiveScope = getEffectiveScope( d.getScope(), artifact.getScope() );
+ Artifact dependencyArtifact;
- if ( effectiveScope != null )
+ //TODO: deal with this in a unified way, probably just looking at the dependency.
+ if ( d.getClassifier() != null )
{
- Artifact dependencyArtifact;
-
- //TODO: deal with this in a unified way, probably just looking at the dependency.
- if ( d.getClassifier() != null )
- {
- dependencyArtifact = repositorySystem.createArtifactWithClassifier( d.getGroupId(), d.getArtifactId(), d.getVersion(), d.getType(), d.getClassifier() );
- }
- else
- {
- dependencyArtifact = repositorySystem.createArtifact( d.getGroupId(), d.getArtifactId(), d.getVersion(), effectiveScope, d.getType() );
- }
-
- dependencyArtifact.setOptional( d.isOptional() );
-
- if ( Artifact.SCOPE_SYSTEM.equals( effectiveScope ) )
- {
- dependencyArtifact.setFile( new File( d.getSystemPath() ) );
- }
-
- artifacts.add( dependencyArtifact );
+ dependencyArtifact = repositorySystem.createArtifactWithClassifier( d.getGroupId(), d.getArtifactId(), d.getVersion(), d.getType(), d.getClassifier() );
+ }
+ else
+ {
+ dependencyArtifact = repositorySystem.createArtifact( d.getGroupId(), d.getArtifactId(), d.getVersion(), effectiveScope, d.getType() );
}
+
+ dependencyArtifact.setOptional( d.isOptional() );
+
+ if ( Artifact.SCOPE_SYSTEM.equals( effectiveScope ) )
+ {
+ dependencyArtifact.setFile( new File( d.getSystemPath() ) );
+ }
+
+ artifacts.add( dependencyArtifact );
}
}
}
- catch ( ProjectBuildingException e )
- {
- // When this happens we have a Maven 1.x POM, or some invalid POM. There is still a pile of
- // shit in the Maven 2.x repository that should have never found its way into the repository
- // but it did.
- logger.debug( "Failed to resolve artifact dependencies: " + e.getMessage() );
- }
return new ResolutionGroup( pomArtifact, artifacts, remoteRepositories );
}
@@ -242,13 +256,13 @@
}
// USED BY MAVEN ASSEMBLY PLUGIN
- @Deprecated
- public static Set<Artifact> createArtifacts( ArtifactFactory artifactFactory, List<Dependency> dependencies, String inheritedScope, ArtifactFilter dependencyFilter, MavenProject project )
- throws InvalidDependencyVersionException
- {
+ @Deprecated
+ public static Set<Artifact> createArtifacts( ArtifactFactory artifactFactory, List<Dependency> dependencies, String inheritedScope, ArtifactFilter dependencyFilter, MavenProject project )
+ throws InvalidDependencyVersionException
+ {
return createArtifacts( artifactFactory, dependencies, dependencyFilter );
}
-
+
private static Set<Artifact> createArtifacts( ArtifactFactory factory, List<Dependency> dependencies, ArtifactFilter filter )
{
Set<Artifact> artifacts = new LinkedHashSet<Artifact>();
@@ -262,17 +276,17 @@
artifacts.add( dependencyArtifact );
}
}
-
+
return artifacts;
- }
-
+ }
+
public MavenProjectBuilder getProjectBuilder()
{
if ( projectBuilder != null )
{
return projectBuilder;
}
-
+
try
{
projectBuilder = container.lookup( MavenProjectBuilder.class );
@@ -281,7 +295,7 @@
{
// Won't happen
}
-
+
return projectBuilder;
- }
+ }
}
Added: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java?rev=779283&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java (added)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java Wed May 27 19:45:32 2009
@@ -0,0 +1,63 @@
+package org.apache.maven.project.artifact;
+
+import org.apache.maven.artifact.DefaultArtifact;
+import org.apache.maven.artifact.handler.ArtifactHandler;
+import org.apache.maven.project.MavenProject;
+
+public class ProjectArtifact
+ extends DefaultArtifact
+{
+ private MavenProject project;
+
+ public ProjectArtifact( MavenProject project )
+ {
+ super( project.getGroupId(), project.getArtifactId(), project.getVersion(), null, "pom", null, new PomArtifactHandler() );
+ this.project = project;
+ setFile( project.getFile() );
+ setResolved( true );
+ }
+
+ public MavenProject getProject()
+ {
+ return project;
+ }
+
+ static class PomArtifactHandler
+ implements ArtifactHandler
+ {
+ public String getClassifier()
+ {
+ return "pom";
+ }
+
+ public String getDirectory()
+ {
+ return null;
+ }
+
+ public String getExtension()
+ {
+ return "pom";
+ }
+
+ public String getLanguage()
+ {
+ return "none";
+ }
+
+ public String getPackaging()
+ {
+ return "pom";
+ }
+
+ public boolean isAddedToClasspath()
+ {
+ return false;
+ }
+
+ public boolean isIncludesDependencies()
+ {
+ return false;
+ }
+ }
+}
Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/ProjectArtifact.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/components/branches/MNG-2766/maven-core/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/resources/META-INF/plexus/components.xml?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/resources/META-INF/plexus/components.xml Wed May 27 19:45:32 2009
@@ -36,7 +36,7 @@
<role>org.apache.maven.plugin.PluginManager</role>
</requirement>
<requirement>
- <role>org.apache.maven.artifact.resolver.ResolutionErrorHandler</role>
+ <role>org.apache.maven.ProjectDependenciesResolver</role>
</requirement>
<requirement>
<role>org.apache.maven.repository.RepositorySystem</role>
Modified: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java Wed May 27 19:45:32 2009
@@ -2,8 +2,10 @@
import java.io.File;
import java.util.Arrays;
+import java.util.List;
import java.util.Properties;
+import org.apache.maven.artifact.InvalidRepositoryException;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.execution.DefaultMavenExecutionRequest;
import org.apache.maven.execution.DefaultMavenExecutionResult;
@@ -29,68 +31,66 @@
@Requirement
protected MavenProjectBuilder projectBuilder;
-
+
protected void setUp()
throws Exception
{
repositorySystem = lookup( RepositorySystem.class );
- projectBuilder = lookup( MavenProjectBuilder.class );
+ projectBuilder = lookup( MavenProjectBuilder.class );
}
@Override
- protected void tearDown() throws Exception {
- repositorySystem = null;
- projectBuilder = null;
- super.tearDown();
+ protected void tearDown()
+ throws Exception
+ {
+ repositorySystem = null;
+ projectBuilder = null;
+ super.tearDown();
}
abstract protected String getProjectsDirectory();
-
+
protected File getProject( String name )
throws Exception
{
File source = new File( new File( getBasedir(), getProjectsDirectory() ), name );
- File target = new File( new File ( getBasedir(), "target" ), name );
+ File target = new File( new File( getBasedir(), "target" ), name );
if ( !target.exists() )
{
FileUtils.copyDirectoryStructure( source, target );
}
return new File( target, "pom.xml" );
- }
-
+ }
+
/**
* We need to customize the standard Plexus container with the plugin discovery listener which
- * is what looks for the META-INF/maven/plugin.xml resources that enter the system when a
- * Maven plugin is loaded.
+ * is what looks for the META-INF/maven/plugin.xml resources that enter the system when a Maven
+ * plugin is loaded.
*
* We also need to customize the Plexus container with a standard plugin discovery listener
* which is the MavenPluginCollector. When a Maven plugin is discovered the MavenPluginCollector
- * collects the plugin descriptors which are found.
+ * collects the plugin descriptors which are found.
*/
protected void customizeContainerConfiguration( ContainerConfiguration containerConfiguration )
{
containerConfiguration.addComponentDiscoverer( PluginManager.class );
containerConfiguration.addComponentDiscoveryListener( PluginManager.class );
}
-
+
protected MavenExecutionRequest createMavenExecutionRequest( File pom )
throws Exception
{
- ArtifactRepository localRepository = repositorySystem.createDefaultLocalRepository();
- ArtifactRepository remoteRepository = repositorySystem.createDefaultRemoteRepository();
-
MavenExecutionRequest request = new DefaultMavenExecutionRequest()
- .setPom( pom )
- .setProjectPresent( true )
+ .setPom( pom ).setProjectPresent( true )
.setPluginGroups( Arrays.asList( new String[] { "org.apache.maven.plugins" } ) )
- .setLocalRepository( localRepository )
- .setRemoteRepositories( Arrays.asList( remoteRepository ) )
- .setGoals( Arrays.asList( new String[] { "package" } ) )
- .setProperties( new Properties() );
-
+ .setLocalRepository( getLocalRepository() )
+ .setRemoteRepositories( getRemoteRepositories() )
+ .setGoals( Arrays.asList( new String[] { "package" } ) )
+ .setProperties( new Properties() );
+
return request;
}
-
+
// layer the creation of a project builder configuration with a request, but this will need to be
// a Maven subclass because we don't want to couple maven to the project builder which we need to
// separate.
@@ -99,12 +99,10 @@
{
MavenExecutionRequest request = createMavenExecutionRequest( pom );
- ProjectBuilderConfiguration configuration = new DefaultProjectBuilderConfiguration()
- .setLocalRepository( request.getLocalRepository() )
- .setRemoteRepositories( request.getRemoteRepositories() );
+ ProjectBuilderConfiguration configuration = new DefaultProjectBuilderConfiguration().setLocalRepository( request.getLocalRepository() ).setRemoteRepositories( request.getRemoteRepositories() );
MavenProject project = null;
-
+
if ( pom != null )
{
project = projectBuilder.build( pom, configuration );
@@ -113,18 +111,30 @@
{
project = createStubMavenProject();
}
-
+
MavenSession session = new MavenSession( getContainer(), request, new DefaultMavenExecutionResult(), project );
-
+
return session;
- }
-
+ }
+
protected MavenProject createStubMavenProject()
{
Model model = new Model();
model.setGroupId( "org.apache.maven.test" );
model.setArtifactId( "maven-test" );
model.setVersion( "1.0" );
- return new MavenProject( model );
+ return new MavenProject( model );
+ }
+
+ protected List<ArtifactRepository> getRemoteRepositories()
+ throws InvalidRepositoryException
+ {
+ return Arrays.asList( repositorySystem.createDefaultRemoteRepository() );
+ }
+
+ protected ArtifactRepository getLocalRepository()
+ throws InvalidRepositoryException
+ {
+ return repositorySystem.createDefaultLocalRepository();
}
}
Added: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java?rev=779283&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java (added)
+++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java Wed May 27 19:45:32 2009
@@ -0,0 +1,87 @@
+package org.apache.maven;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Exclusion;
+import org.apache.maven.model.Model;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.component.annotations.Requirement;
+
+public class ProjectDependenciesResolverTest
+ extends AbstractCoreMavenComponentTestCase
+{
+ @Requirement
+ private ProjectDependenciesResolver resolver;
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ resolver = lookup( ProjectDependenciesResolver.class );
+ }
+
+ @Override
+ protected void tearDown()
+ throws Exception
+ {
+ resolver = null;
+ super.tearDown();
+ }
+
+ protected String getProjectsDirectory()
+ {
+ return "src/test/projects/project-dependencies-resolver";
+ }
+
+ public void testCalculationOfBuildPlanWithIndividualTaskOfTheCleanCleanGoal()
+ throws Exception
+ {
+ MavenProject project = createProject();
+
+ Set<Artifact> artifactDependencies = resolver.resolve( project, Artifact.SCOPE_COMPILE, getLocalRepository(), getRemoteRepositories() );
+ assertEquals( 0, artifactDependencies.size() );
+
+ artifactDependencies = resolver.resolve( project, Artifact.SCOPE_RUNTIME, getLocalRepository(), getRemoteRepositories() );
+ assertEquals( 1, artifactDependencies.size() );
+ assertEquals( "maven-core-it-support" , artifactDependencies.iterator().next().getArtifactId() );
+ }
+
+ private MavenProject createProject()
+ {
+ Model model = new Model();
+ model.setModelVersion( "4.0.0" );
+ model.setGroupId( "org.apache.maven" );
+ model.setArtifactId( "project-test" );
+ model.setVersion( "1.0" );
+
+ List<Dependency> dependencies = new ArrayList<Dependency>();
+ dependencies.add( d( "org.apache.maven.its", "maven-core-it-support", "1.3" ) );
+ model.setDependencies( dependencies );
+
+ return new MavenProject( model );
+ }
+
+ private Dependency d( String g, String a, String v )
+ {
+ Dependency d = new Dependency();
+ d.setGroupId( g );
+ d.setArtifactId( a );
+ d.setVersion( v );
+ d.setScope( Artifact.SCOPE_RUNTIME );
+
+ Exclusion e = new Exclusion();
+ e.setGroupId( "commons-lang" );
+ e.setArtifactId( "commons-lang" );
+ d.addExclusion( e );
+
+ return d;
+ }
+}
Propchange: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/TestMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/TestMetadataSource.java?rev=779283&r1=779282&r2=779283&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/TestMetadataSource.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/TestMetadataSource.java Wed May 27 19:45:32 2009
@@ -10,6 +10,7 @@
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.metadata.ResolutionGroup;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.resolver.metadata.MetadataSource;
import org.apache.maven.project.artifact.MavenMetadataSource;
import org.codehaus.plexus.component.annotations.Component;
@@ -32,5 +33,4 @@
return rg;
}
-
}
\ No newline at end of file
Added: maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/project-with-exclusions/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/project-with-exclusions/pom.xml?rev=779283&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/project-with-exclusions/pom.xml (added)
+++ maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/project-with-exclusions/pom.xml Wed May 27 19:45:32 2009
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.maven.its.mng4034</groupId>
+ <artifactId>parent</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.its</groupId>
+ <artifactId>maven-core-it-support</artifactId>
+ <version>1.3</version>
+ <scope>runtime</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+</project>
Propchange: maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/project-with-exclusions/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/branches/MNG-2766/maven-core/src/test/projects/project-dependencies-resolver/project-with-exclusions/pom.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"