Hi Craig,

Craig McClanahan wrote on Wednesday, August 09, 2006 6:58 AM:

> A project[1] that I'm a participant in is a recent convert to
> Maven2 as a
> build environment.  So far, there's a lot to like.  But ... I
> think I've run
> into a limitation of the current design related to resolving
> conflicts in dependency versions.  I'm looking for advice on what I
> can do 
> other than
> wait for FINR ("fixed in next rev") as the "Better Builds"
> book implies will
> be necessary :-).
> 
> The starting point for my scenario is I wanted to explore
> whether Commons
> Logging 1.1 could successfully replace version 1.0.4 in a
> Shale-created webapp.  To see all the gory details, you're probably
> best 
> off downloading
> the sources and trying the build yourself.  But the bottom
> line is that the
> only way I can convince a particular webapp build to use the
> new version of
> Commons Logging is to put the explicit dependence on 1.1
> directly in the POM
> for that webapp.  This is *not* what I want -- I'd much
> prefer to inherit
> the Commons Logging version dependency from the top-level shale POM (
> org.apache.shale:shale-parent), or even from the intermediate
> layer I have
> as a basis for all the example webapps
> (org.apache.shale:shale-apps-parent).

If you have a depednencyManagement section in your top-level POM and add the 
dep to your webapp without the version, it will work.

> Alas, this doesn't work.  Any dependency such as MyFaces that
> declares a dependency on Commons Logging 1.0.4 seems to win, because
> it 
> is closer on
> the "nearness" algorithm described in Section 3.6 of the "Better
> Builds" book.

Point is, that you *have to* desclare the dep in the webapp, since the 
algorithm for the "nearest version" would take another version from one of your 
dependencies.

> It would seem to me that the simplest way to deal with this is that
> inherited dependencies (from a parent POM) should be
> considered as being at
> the same level of the dependency graph, just as if they had
> been explicitly
> declared.  That would always allow a project to establish priority for
> shared dependencies itself, without having their builds
> destabilized because
> inheritance and dependence are both being treated as one step down the
> graph.  Am I missing something?  Is there some way to
> accomplish what I want
> (with M2 2.0.4) in the mean time, without explicitly declaring this
> dependency in the leaf node artifact POMs?

Vote for it:
http://jira.codehaus.org/browse/MNG-1577

- Jörg

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to