if you look at AbstractMavenLifecycleParticipant source file:

    /**
     * Invoked after MavenSession instance has been created.
     *
     * This callback is intended to allow extensions to inject execution 
properties,
     * activate profiles and perform similar tasks that affect MavenProject
     * instance construction.
     */
    // TODO: This is too early for build extensions, so maybe just remove it?
    public void afterSessionStart( MavenSession session )
        throws MavenExecutionException
    {

the TODO seems exactly what you're facing

and if you have a look at place where it is used, ie 
DefaultMaven.doExecute(...), you'll see that this method happens really too 
early to be able to do anything about this problem

IMHO, you'd better use afterProjectsRead(...) method, which should have the 
right classloader prepared

and we should probably change the "TODO" into javadoc, since this shuld be 
documented limitation

WDYT?

Regards,

Hervé

Le lundi 19 mai 2014 11:31:42 William Ferguson a écrit :
> So it boils down to ProjectDependenciesResolver being able to resolve an
> s3wagon dependency from a Mojo, but not from MavenLifecycleParticipant.
> 
> Is it because RepositorySystem has not been fully configured by
> MLCP#afterProjectsRead?
> If so, is there a way to ensure that it is configured by then?
> 
> Someone, anyone?
> 
> William
> 
> 
> On Sun, May 18, 2014 at 9:23 AM, William Ferguson <
> 
> william.fergu...@xandar.com.au> wrote:
> > OK, I'm really hoping someone can provide some more insight on this as I
> > have reached my limit.
> > 
> > To make things clearer, I have created a project containing
> > integration-tests showing the failure that is causing us grief (external
> > wagon dependencies not being resolvable from within
> > MavenLifeCycleParticipant) and well as integration tests showing that that
> > same deps are resolvable either using the std Maven dep resolution or
> > explicit resolution from within a Mojo,
> > 
> > https://github.com/william-ferguson-au/example-resolution-plugin.
> > 
> > Could someone please have a look and help me work out how to get the
> > external wagon deps to resolve from the MLCP?
> > 
> > William
> > 
> > 
> > On Fri, May 16, 2014 at 1:22 AM, William Ferguson <
> > 
> > william.fergu...@xandar.com.au> wrote:
> >> No one on the user's list wanted to have a go at this. How about someone
> >> from the Dev list?
> >> 
> >> William
> >> 
> >> 
> >> ---------- Forwarded message ----------
> >> From: William Ferguson <william.fergu...@xandar.com.au>
> >> Date: Mon, May 12, 2014 at 8:58 PM
> >> Subject: Wagon extensions not available from
> >> AbstractMavenLifecycleParticipant or maven-dependency-tree?
> >> To: Maven Users List <us...@maven.apache.org>
> >> 
> >> 
> >> I have a MavenLifecycleParticipant in my plugin. It uses
> >> maven-dependency-tree to resolve some deps that we need to do extra
> >> processing on. It works fine if the deps are in the local repo.
> >> 
> >> But if the s3 Wagon is defined in the project along with a dependency
> >> from the s3 bucket, then the following debug log shows that
> >> DependencyGraphBuilder of maven-dependency-tree can't resolve the s3
> >> wagon,
> >> and the dependency is not resolved now or later in the build, so
> >> compilation fails.
> >> 
> >> NB If I remove the MavenLifecycleParticipant then the dep is resolved via
> >> the S3 Wagon.
> >> 
> >> Q1) When are the Wagons configured? Shouldn't it be prior to
> >> MavenLifecycleParticipant being called?
> >> Q2) How can I get the DependencyGraphBuilder to resolve the s3 artifact
> >> from within the MavenLifecycleParticipant?
> >> 
> >> 
> >> Here is the stacktrace:
> >> 
> >> [DEBUG] Could not find metadata
> >> com.viewpagerindicator:viewpagerindicator:2.4.2-SNAPSHOT/maven-metadata.x
> >> ml
> >> in local (D:\dev\maven-local-repository)
> >> [DEBUG] java.util.NoSuchElementException
> >> 
> >>       role: org.apache.maven.wagon.Wagon
> >>   
> >>   roleHint: s3
> >> 
> >> org.codehaus.plexus.component.repository.exception.ComponentLookupExcepti
> >> on: java.util.NoSuchElementException
> >> 
> >>       role: org.apache.maven.wagon.Wagon
> >>   
> >>   roleHint: s3
> >> 
> >> at
> >> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.
> >> java:264)>> 
> >>  at
> >> 
> >> org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.
> >> java:252) at
> >> org.eclipse.aether.internal.connector.wagon.PlexusWagonProvider.lookup(Pl
> >> exusWagonProvider.java:33)>> 
> >>  at
> >> 
> >> org.eclipse.aether.connector.wagon.WagonRepositoryConnector.lookupWagon(W
> >> agonRepositoryConnector.java:337) at
> >> org.eclipse.aether.connector.wagon.WagonRepositoryConnector.<init>(WagonR
> >> epositoryConnector.java:157)>> 
> >>  at
> >> 
> >> org.eclipse.aether.connector.wagon.WagonRepositoryConnectorFactory.newIns
> >> tance(WagonRepositoryConnectorFactory.java:159) at
> >> org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider.newRe
> >> positoryConnector(DefaultRepositoryConnectorProvider.java:139)>> 
> >>  at
> >> 
> >> org.eclipse.aether.internal.impl.DefaultMetadataResolver$ResolveTask.run(
> >> DefaultMetadataResolver.java:613) at
> >> org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(Runnable
> >> ErrorForwarder.java:67)>> 
> >>  at
> >> 
> >> org.eclipse.aether.internal.impl.DefaultMetadataResolver$1.execute(Defaul
> >> tMetadataResolver.java:540) at
> >> org.eclipse.aether.internal.impl.DefaultMetadataResolver.resolve(DefaultM
> >> etadataResolver.java:395)>> 
> >>  at
> >> 
> >> org.eclipse.aether.internal.impl.DefaultMetadataResolver.resolveMetadata(
> >> DefaultMetadataResolver.java:218) at
> >> org.apache.maven.repository.internal.DefaultVersionResolver.resolveVersio
> >> n(DefaultVersionResolver.java:250)>> 
> >>  at
> >> 
> >> org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.load
> >> Pom(DefaultArtifactDescriptorReader.java:284) at
> >> org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.read
> >> ArtifactDescriptor(DefaultArtifactDescriptorReader.java:217)>> 
> >>  at
> >> 
> >> org.eclipse.aether.internal.impl.DefaultDependencyCollector.process(Defau
> >> ltDependencyCollector.java:461) at
> >> org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDepend
> >> encies(DefaultDependencyCollector.java:261)>> 
> >>  at
> >> 
> >> org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependenc
> >> ies(DefaultRepositorySystem.java:317) at
> >> org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(Defau
> >> ltProjectDependenciesResolver.java:159)>> 
> >>  at
> >> 
> >> org.apache.maven.shared.dependency.graph.internal.Maven31DependencyGraphB
> >> uilder.resolveDependencies(Maven31DependencyGraphBuilder.java:113) at
> >> org.apache.maven.shared.dependency.graph.internal.Maven31DependencyGraphB
> >> uilder.buildDependencyGraph(Maven31DependencyGraphBuilder.java:99)>> 
> >>  at
> >> 
> >> org.apache.maven.shared.dependency.graph.internal.DefaultDependencyGraphB
> >> uilder.buildDependencyGraph(DefaultDependencyGraphBuilder.java:74) at
> >> com.jayway.maven.plugins.android.common.DependencyResolver.getProjectDepe
> >> ndenciesFor(DependencyResolver.java:54)>> 
> >>  at
> >> 
> >> com.jayway.maven.plugins.android.phase_prebuild.ClasspathModifierLifecycl
> >> eParticipant.afterProjectsRead(ClasspathModifierLifecycleParticipant.java
> >> :78) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:317)
> >> 
> >>  at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
> >> 
> >> at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
> >> 
> >>  at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)
> >> 
> >> at org.apache.maven.cli.MavenCli.main(MavenCli.java:157)
> >> 
> >>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >> 
> >> at
> >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java
> >> :57)>> 
> >>  at
> >> 
> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI
> >> mpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606)
> >> 
> >>  at
> >> 
> >> org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher
> >> .java:289) at
> >> org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:22
> >> 9)
> >> 
> >>  at
> >> 
> >> org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launch
> >> er.java:415) at
> >> org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
> >> 
> >> 
> >> William


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to