+1 for changing the description. Maybe even the artifact id  :)

There is the small problem of the complex dependency graph stuff; there
does not appear to be a smart way to wrap the advanced functions.

The issue is ProjectBuildingResult#getDependencyResolutionResult. There
does not immediately appear to be a way to bridge this with reflection. I
considered making a wrapper that would allow all clients to use the
org.eclipse.aether api but simply bridge to the corresponding sonatype
implementations when needed.

In that case we'd probably be looking at a third ProjectBuilder (in
maven-artifact-transfer)
that uses its own api + the eclipse aether api. I assume it's safe to load
the eclipse aether api inside maven 3.0.x ?

Kristian


2015-06-13 21:01 GMT+02:00 Robert Scholte <[email protected]>:

> There's no release yet, so we're even free to change/rename
> classes/methods/constructors etc.
> First intention was indeed install/deploy, but then I discovered I had to
> do more.
>
> So let's change the description and let this become that main
> aether-neutral project.
>
> Robert
>
> Op Sat, 13 Jun 2015 20:55:51 +0200 schreef Kristian Rosenvold <
> [email protected]>:
>
>
>  I looked at maven-artifact-transfer and the code seems to be focused on
>> install/deploy. The "description" tag in the project also says
>>
>> "An API to either install or deploy artifacts with Maven3"
>>
>> It would appear we should either change the description of the project (to
>> include "download") or create a separate project for aether-neutral
>> download/resolution of artifacts, containing stuff like my code from
>> http://svn.apache.org/viewvc?view=revision&revision=r1685177
>>
>> I dont have any idea of how much of this is spread all over the place
>> already...
>>
>>
>> Kristian
>>
>>
>>
>> 2015-06-13 19:09 GMT+02:00 Robert Scholte <[email protected]>:
>>
>>  Hi Kristian,
>>>
>>> org.apache.maven.artifact.resolver.ArtifactResolver is part of
>>> maven-compat.
>>> I've fixed maven-artifact-transfer, which should contain the preferred
>>> ArtifactResolver.
>>> Let me know it that'll work for you.
>>>
>>> thanks,
>>> Robert
>>>
>>>
>>> Op Sat, 13 Jun 2015 11:28:03 +0200 schreef <[email protected]>:
>>>
>>>  Author: krosenvold
>>>
>>>> Date: Sat Jun 13 09:28:02 2015
>>>> New Revision: 1685226
>>>>
>>>> URL: http://svn.apache.org/r1685226
>>>> Log:
>>>> Switched to non-deprecated
>>>>
>>>> org.apache.maven.artifact.resolver.ArtifactResolver#resolve(org.apache.maven.artifact.resolver.ArtifactResolutionRequest)
>>>>
>>>> Modified:
>>>>
>>>>
>>>> maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java
>>>>
>>>>
>>>> maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
>>>>
>>>>
>>>> maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolverTest.java
>>>>
>>>> Modified:
>>>>
>>>> maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java
>>>> URL:
>>>>
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java?rev=1685226&r1=1685225&r2=1685226&view=diff
>>>>
>>>>
>>>> ==============================================================================
>>>> ---
>>>>
>>>> maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java
>>>> (original)
>>>> +++
>>>>
>>>> maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java
>>>> Sat Jun 13 09:28:02 2015
>>>> @@ -21,10 +21,8 @@ package org.apache.maven.plugin.assembly
>>>> import org.apache.maven.artifact.Artifact;
>>>>  import org.apache.maven.artifact.factory.ArtifactFactory;
>>>> -import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
>>>>  import org.apache.maven.artifact.repository.ArtifactRepository;
>>>> -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.ArtifactResolver;
>>>>  import
>>>> org.apache.maven.artifact.resolver.MultipleArtifactsNotFoundException;
>>>> @@ -69,8 +67,6 @@ public class DefaultDependencyResolver
>>>>      @Requirement
>>>>      private ArtifactResolver resolver;
>>>> -    @Requirement
>>>> -    private ArtifactMetadataSource metadataSource;
>>>>     @Requirement
>>>>      private ArtifactFactory factory;
>>>> @@ -81,11 +77,10 @@ public class DefaultDependencyResolver
>>>>          // for plexus init
>>>>      }
>>>> -    protected DefaultDependencyResolver( final ArtifactResolver
>>>> resolver, final ArtifactMetadataSource metadataSource,
>>>> -                                         final ArtifactFactory factory,
>>>> final Logger logger )
>>>> +    protected DefaultDependencyResolver( final ArtifactResolver
>>>> resolver, final ArtifactFactory factory,
>>>> +                                         final Logger logger )
>>>>      {
>>>>          this.resolver = resolver;
>>>> -        this.metadataSource = metadataSource;
>>>>          this.factory = factory;
>>>>          enableLogging( logger );
>>>>      }
>>>> @@ -195,12 +190,13 @@ public class DefaultDependencyResolver
>>>>          final Set<Artifact> resolved = new LinkedHashSet<Artifact>();
>>>>          for ( final Artifact depArtifact : dependencyArtifacts )
>>>>          {
>>>> -            try
>>>> -            {
>>>> -                resolver.resolve( depArtifact, repos,
>>>> configSource.getLocalRepository() );
>>>> -                resolved.add( depArtifact );
>>>> -            }
>>>> -            catch ( final ArtifactResolutionException e )
>>>> +            ArtifactResolutionRequest req = new
>>>> ArtifactResolutionRequest();
>>>> +            req.setLocalRepository( configSource.getLocalRepository()
>>>> );
>>>> +            req.setRemoteRepositories( repos );
>>>> +            req.setArtifact( depArtifact );
>>>> +
>>>> +            ArtifactResolutionResult resolve = resolver.resolve( req );
>>>> +            if ( resolve.hasExceptions() )
>>>>              {
>>>>                  if ( getLogger().isDebugEnabled() )
>>>>                  {
>>>> @@ -209,18 +205,14 @@ public class DefaultDependencyResolver
>>>>                  }
>>>>                  missing.add( depArtifact );
>>>>              }
>>>> -            catch ( final ArtifactNotFoundException e )
>>>> +            else
>>>>              {
>>>> -                if ( getLogger().isDebugEnabled() )
>>>> -                {
>>>> -                    getLogger().debug(
>>>> -                        "Failed to resolve: " + depArtifact.getId() + "
>>>> for assembly: " + assembly.getId() );
>>>> -                }
>>>> -                missing.add( depArtifact );
>>>> +                resolved.add( depArtifact );
>>>>              }
>>>>          }
>>>>         if ( !missing.isEmpty() )
>>>> +
>>>>          {
>>>>              final MavenProject project = configSource.getProject();
>>>>              final Artifact rootArtifact = project.getArtifact();
>>>> @@ -245,22 +237,31 @@ public class DefaultDependencyResolver
>>>>          final MavenProject project = configSource.getProject();
>>>>         final ArtifactFilter filter = info.getScopeFilter();
>>>> -        final ArtifactRepository localRepository =
>>>> configSource.getLocalRepository();
>>>> +
>>>> +        ArtifactResolutionRequest req = new
>>>> ArtifactResolutionRequest();
>>>> +        req.setLocalRepository( configSource.getLocalRepository() );
>>>> +        req.setResolveRoot( false );
>>>> +        req.setRemoteRepositories( repos );
>>>> +        req.setResolveTransitively( true );
>>>> +        req.setArtifact( project.getArtifact() );
>>>> +        req.setArtifactDependencies( dependencyArtifacts );
>>>> +        req.setManagedVersionMap( project.getManagedVersionMap() );
>>>> +        req.setCollectionFilter( filter );
>>>> +        req.setOffline( configSource.getMavenSession().isOffline() );
>>>> +        req.setForceUpdate(
>>>> configSource.getMavenSession().getRequest().isUpdateSnapshots() );
>>>> +        req.setServers(
>>>> configSource.getMavenSession().getRequest().getServers() );
>>>> +        req.setMirrors(
>>>> configSource.getMavenSession().getRequest().getMirrors() );
>>>> +        req.setProxies(
>>>> configSource.getMavenSession().getRequest().getProxies() );
>>>> +
>>>> +
>>>>         ArtifactResolutionResult result;
>>>> -        try
>>>> -        {
>>>> -            result = resolver.resolveTransitively( dependencyArtifacts,
>>>> project.getArtifact(),
>>>> -
>>>>  project.getManagedVersionMap(), localRepository, repos,
>>>> -                                                   metadataSource,
>>>> filter );
>>>> -        }
>>>> -        catch ( final ArtifactResolutionException e )
>>>> -        {
>>>> -            throw new DependencyResolutionException( "Failed to resolve
>>>> dependencies for assembly: ", e );
>>>> -        }
>>>> -        catch ( final ArtifactNotFoundException e )
>>>> +
>>>> +        result = resolver.resolve( req );
>>>> +        if ( result.hasExceptions() )
>>>>          {
>>>> -            throw new DependencyResolutionException( "Failed to resolve
>>>> dependencies for assembly: ", e );
>>>> +            throw new DependencyResolutionException( "Failed to resolve
>>>> dependencies for assembly: ",
>>>> +
>>>>  result.getExceptions().get( 0 ) );
>>>>          }
>>>>         getLogger().debug( "While resolving dependencies of " +
>>>> project.getId() + ":" );
>>>>
>>>> Modified:
>>>>
>>>> maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
>>>> URL:
>>>>
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java?rev=1685226&r1=1685225&r2=1685226&view=diff
>>>>
>>>>
>>>> ==============================================================================
>>>> ---
>>>>
>>>> maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
>>>> (original)
>>>> +++
>>>>
>>>> maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
>>>> Sat Jun 13 09:28:02 2015
>>>> @@ -149,8 +149,7 @@ public class DependencySetAssemblyPhaseT
>>>>              projectBuilder = macTask.projectBuilder;
>>>>          }
>>>> -        final DependencySetAssemblyPhase phase = new
>>>> DependencySetAssemblyPhase( projectBuilder, dr, logger );
>>>> -
>>>> +        final DependencySetAssemblyPhase phase = new
>>>> DependencySetAssemblyPhase( null, dr, null );
>>>>          phase.enableLogging( logger );
>>>>         return phase;
>>>>
>>>> Modified:
>>>>
>>>> maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolverTest.java
>>>> URL:
>>>>
>>>> http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolverTest.java?rev=1685226&r1=1685225&r2=1685226&view=diff
>>>>
>>>>
>>>> ==============================================================================
>>>> ---
>>>>
>>>> maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolverTest.java
>>>> (original)
>>>> +++
>>>>
>>>> maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolverTest.java
>>>> Sat Jun 13 09:28:02 2015
>>>> @@ -21,7 +21,6 @@ package org.apache.maven.plugin.assembly
>>>> import org.apache.maven.artifact.Artifact;
>>>>  import org.apache.maven.artifact.factory.ArtifactFactory;
>>>> -import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
>>>>  import org.apache.maven.artifact.repository.ArtifactRepository;
>>>>  import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
>>>>  import
>>>> org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
>>>> @@ -60,8 +59,6 @@ public class DefaultDependencyResolverTe
>>>>     private ArtifactResolver resolver;
>>>> -    private ArtifactMetadataSource metadataSource;
>>>> -
>>>>      private ConsoleLogger logger;
>>>>     @Override
>>>> @@ -71,7 +68,6 @@ public class DefaultDependencyResolverTe
>>>>          super.setUp();
>>>>         resolver = (ArtifactResolver) lookup( ArtifactResolver.ROLE );
>>>> -        metadataSource = (ArtifactMetadataSource) lookup(
>>>> ArtifactMetadataSource.class);
>>>>          factory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
>>>>          repoFactory = (ArtifactRepositoryFactory) lookup(
>>>> ArtifactRepositoryFactory.ROLE );
>>>>          layout = (ArtifactRepositoryLayout) lookup(
>>>> ArtifactRepositoryLayout.ROLE, "default" );
>>>> @@ -94,10 +90,10 @@ public class DefaultDependencyResolverTe
>>>>          final ResolutionManagementInfo info = new
>>>> ResolutionManagementInfo( project );
>>>>         final Assembly assembly = new Assembly();
>>>> -        new DefaultDependencyResolver( resolver, metadataSource,
>>>> factory, logger ).updateDependencySetResolutionRequirements(
>>>> -            ds1,
>>>> -                info, AssemblyId.createAssemblyId( assembly),
>>>> -                project);
>>>> +        new DefaultDependencyResolver( resolver, factory, logger
>>>> ).updateDependencySetResolutionRequirements( ds1, info,
>>>> +
>>>>                                       AssemblyId.createAssemblyId(
>>>> +
>>>>                                           assembly ),
>>>> +
>>>>                                       project );
>>>>         assertTrue( info.isResolutionRequired() );
>>>>          assertFalse( info.isResolvedTransitively() );
>>>> @@ -149,9 +145,9 @@ public class DefaultDependencyResolverTe
>>>>          allProjects.add( module2 );
>>>>          allProjects.add( module2a );
>>>> -        expect( cs.getReactorProjects()).andReturn( allProjects
>>>> ).anyTimes();
>>>> +        expect( cs.getReactorProjects() ).andReturn( allProjects
>>>> ).anyTimes();
>>>> -        expect( cs.getProject()).andReturn( project ).anyTimes();
>>>> +        expect( cs.getProject() ).andReturn( project ).anyTimes();
>>>>         final ResolutionManagementInfo info = new
>>>> ResolutionManagementInfo( project );
>>>> @@ -189,15 +185,14 @@ public class DefaultDependencyResolverTe
>>>>         mm.replayAll();
>>>> -        final DefaultDependencyResolver resolver =
>>>> -            new DefaultDependencyResolver( this.resolver,
>>>> metadataSource, factory, logger );
>>>> +        final DefaultDependencyResolver resolver = new
>>>> DefaultDependencyResolver( this.resolver, factory, logger );
>>>>          resolver.enableLogging( new ConsoleLogger( Logger.LEVEL_DEBUG,
>>>> "test" ) );
>>>>         final Assembly assembly = new Assembly();
>>>>          assembly.setModuleSets( moduleSets );
>>>> -
>>>>
>>>> resolver.updateModuleSetResolutionRequirements(AssemblyId.createAssemblyId(
>>>> assembly), ms1, ds1, info, cs);
>>>> -
>>>>
>>>> resolver.updateModuleSetResolutionRequirements(AssemblyId.createAssemblyId(
>>>> assembly ), ms2, ds2, info, cs);
>>>> +        resolver.updateModuleSetResolutionRequirements(
>>>> AssemblyId.createAssemblyId( assembly ), ms1, ds1, info, cs );
>>>> +        resolver.updateModuleSetResolutionRequirements(
>>>> AssemblyId.createAssemblyId( assembly ), ms2, ds2, info, cs );
>>>>         assertTrue( info.isResolutionRequired() );
>>>> @@ -246,9 +241,8 @@ public class DefaultDependencyResolverTe
>>>>          assembly.setRepositories( repositories );
>>>>         final ResolutionManagementInfo info = new
>>>> ResolutionManagementInfo( project );
>>>> -        new DefaultDependencyResolver( resolver, metadataSource,
>>>> factory, logger ).updateRepositoryResolutionRequirements(assembly,
>>>> -                info
>>>> -        );
>>>> +        new DefaultDependencyResolver( resolver, factory, logger
>>>> ).updateRepositoryResolutionRequirements( assembly,
>>>> +
>>>>                                    info );
>>>>         assertTrue( info.isResolutionRequired() );
>>>> @@ -287,8 +281,8 @@ public class DefaultDependencyResolverTe
>>>>          project.setRemoteArtifactRepositories( projectRepos );
>>>>         final List<ArtifactRepository> aggregated =
>>>> -            new DefaultDependencyResolver( resolver, metadataSource,
>>>> factory, logger ).aggregateRemoteArtifactRepositories( externalRepos,
>>>> -
>>>>
>>>>  Collections.singleton( project ) );
>>>> +            new DefaultDependencyResolver( resolver, factory, logger
>>>> ).aggregateRemoteArtifactRepositories(
>>>> +                externalRepos, Collections.singleton( project ) );
>>>>         assertRepositoryWithId( er1.getId(), aggregated, true );
>>>>          assertRepositoryWithId( er2.getId(), aggregated, true );
>>>> @@ -582,8 +576,10 @@ public class DefaultDependencyResolverTe
>>>>          else
>>>>          {
>>>>              boolean found = false;
>>>> -            for (final ArtifactRepository repo : repos) {
>>>> -                if (repoId.equals(repo.getId())) {
>>>> +            for ( final ArtifactRepository repo : repos )
>>>> +            {
>>>> +                if ( repoId.equals( repo.getId() ) )
>>>> +                {
>>>>                      found = true;
>>>>                      break;
>>>>                  }
>>>>
>>>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to