On Sat, Jul 2, 2011 at 7:43 PM, Hervé BOUTEMY <herve.bout...@free.fr> wrote:

> yes, plugin depdendencies are downloaded like any other artifacts via
> DefaultArtifactResolver in maven-artifact-manager for Maven 2 [1].
>
> Plugin resolution and classloader preparation is done in
> DefaultPluginManager
> in maven-core [2]
>
> Velocity and plexus-velocity are nothing different than any library.
>
> I don't see any obvious reason why it fails: mvn -X debugging seems to be
> necessary, comparing output from official Maven build and Gentoo's one
>

I see. Well, I did look at the debug output with my limited understanding,
but couldn't find the error. It's much appreciated if you can have a quick
look at it and let me know what you see.

As I see, the error comes at the following line. Maven has reloaded all the
core maven dependencies since the gentoo maven build shows loading them
urls[x]. official maven build shows this.
[INFO] Setting property: classpath.resource.loader.class =>
'org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader'.
[INFO] Setting property: velocimacro.messages.on => 'false'.
[INFO] Setting property: resource.loader => 'classpath'.

[0] Official maven build http://paste.pocoo.org/show/426913/
[1] Gentoo maven build http://paste.pocoo.org/show/426899/
[2] The diff from [0] to [1] http://paste.pocoo.org/show/426901/

Thanks,
--Kasun


> Regards,
>
> Hervé
>
> [1] http://maven.apache.org/ref/2.2.1/maven-artifact-manager
>
> [2] http://maven.apache.org/ref/2.2.1/maven-core
>
> Le samedi 2 juillet 2011, Kasun Gajasinghe a écrit :
> > On Sat, Jul 2, 2011 at 2:03 PM, Hervé BOUTEMY <herve.bout...@free.fr>
> wrote:
> > > remember that Maven is a core engine to run plugins.
> > > Maven core does not depend on plexus-velocity [1], but
> > > maven-remote-resources-
> > > plugin does [2]
> > > Maven distribution does not contain every library needed by every
> plugin,
> > > but
> > > the logic to download them (hence the "Maven downloads the internet"
> > > effect some complain about).
> > > Each plugin is isolated to have access to its dependencies
> independently
> > > from
> > > others, and even independently from Maven core dependencies as much as
> > > possible.
> > >
> > > So I understand that you rebuilt Maven core from sources to match
> Gentoo
> > > spirit.
> > > What about core dependencies [1]? Did you download them (as done by
> > > build.xml)
> > > or modified the build to use you own compiled from source version?
> > > And what about dependencies  needed by plugins?
> >
> > To give a introduction read this. Skip if this's too long.
> > What we've done is that we grabbed all the maven core dependencies,
> > converted those to ant projects (via maven-ant-plugin), tarballed it, and
> > uploaded to a separate server. Then, when user emerge (install) maven, it
> > downloads all these core dependencies, compiles them and installs to an
> > appropriate location in /usr/share. for example:
> /usr/share/maven-artifact
> > and the jar will be at lib/maven-artifact.jar.
> >
> > Then, maven collect these deps to a one place by creating symlinks to
> those
> > dependency jars in /usr/share/maven-2/lib/. This effectively drops the
> need
> > to create the uberjar in lib/. when the classworlds is launched, it'll
> > identify the dependency jars.
> > See this post as well.
> >
> http://maven.40175.n5.nabble.com/maven-core-tests-fail-when-invoked-via-ant
> > -td4502850.html
> >
> >
> > Now, back to the issue in question.
> > Maven's core dependency is handled via maven-2.2.1-uber.jar. We use
> almost
> > same mechanism. That part is done.
> > Maven plugins handling was left ENTIRELY to the built maven. Therefore, I
> > expected that our maven build will take care of plugin dependencies by
> > downloading and resolving those.  Maven did download the dependency jars
> of
> > the plugins as I've seen; in this case, plexus-velocity.  But, it doesn't
> > correctly resolve the dependencies to make it available at plugin
> runtime.
> > So, I'm asking the question back from you. How does the plugin
> dependencies
> > are handled by maven? What are the points I should consider?
> >
> > In fact, we expect to bundle the maven-plugins to be compiled and
> installed
> > via Gentoo package management system (portage) too. So, your inputs about
> > how maven handles plugin _dependencies_ will be much useful. (The comping
> > and installing happens via portage, i.e. we do not worry maven about it.)
> >
> > > What's your strategy about built-from-source vs binary-downloaded-from-
> > > central-repository? Where do you put the limit? Do you intent to build
> > > your own repository containing only artifacts built by Gentoo people?
> >
> > There are two aspects. The maven user's aspect, and gentoo packager's
> > aspect. User's aspect is the concern now. In user's case, maven will
> > download the dependency binary jars of the package they are building from
> > maven-central. I _assumed_ plugins also behave like any other jar.
> >
> > Packager's aspect is a little different, and doesn't need to be worried,
> > right now!
> >
> > Thanks,
> > --Kasun
> >
> > > Regards,
> > >
> > > Hervé
> > >
> > > [1] http://maven.apache.org/ref/2.2.1/apache-maven/dependencies.html
> > >
> > > [2] http://maven.apache.org/plugins/maven-remote-resources-
> > > plugin/dependencies.html
> > >
> > > Le samedi 2 juillet 2011, Kasun Gajasinghe a écrit :
> > > > Hi,
> > > >
> > > > First of all, the good news. We were able to integrate maven
> > > > successfully to Gentoo. Now, it was able to do most of the general
> > > > compiling and building stuff. We build maven-from-source which
> involve
> > > > considerable
> > >
> > > work
> > >
> > > > to integrate.
> > > >
> > > > But, there's few glitches. There's an error in some builds which use
> > > > maven-remote-resources-plugin. This happened to me when testing the
> > > > build wagon-1.0-beta-7 tag, and few other builds. It fails with
> > > > ClassNotFoundException for the class
> > > > org.codehaus.plexus.velocity.DefaultVelocityComponent which is in the
> > > > package plexus-velocity. The stack trace is at
> > > > http://pastebin.com/p8YUsGw7. Does maven-2.2.1 need plexus-velocity
> as
> > > > a dependency? I haven't noticed. In fact, plexus-velocity is in the
> m2
> > >
> > > repo,
> > >
> > > > though, apparently it's not used by the mvn.
> > > >
> > > > I tried adding plexus-velocity as a dependency (to uber jar if you
> > > > may).
> > >
> > > We
> > >
> > > > don't actually use the uber jar, but we put the needs jars to maven
> > > > lib/ directory, which gets identified by classworlds. It solved the
> > > > said
> > >
> > > issue.
> > >
> > > > But, then it asked for the artifact velocity. See:
> > > > http://pastebin.com/r9vsM85k
> > > > Oh well, what option I have now. I've included velocity as well to be
> > > > picked by classworlds when launching mvn. It brought me here where I
> > > > got stuck: http://pastebin.com/WvLSsupa
> > > >
> > > > Any help please? We are much close to the finish-line.
> > > >
> > > > Thanks,
> > > > --Kasun
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> > > For additional commands, e-mail: dev-h...@maven.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org
>
>


-- 
~~~*******'''''''''''''*******~~~
Kasun Gajasinghe,
University of Moratuwa,
Sri Lanka.
Blog: http://blog.kasunbg.org
Twitter: http://twitter.com/kasunbg

Reply via email to