Apologies if someone has already answered this, a link would suffice.

I'm having a problem with the way maven dependencies handle exclusions. Let me set up a little example:

* Project LOW_LEVEL has dependencies 1 and 2
* Project MID_LEVEL_1 has LOW_LEVEL as a dependency, but does not need dependency 2, so excludes it in its pom * Project MID_LEVEL_2 has LOW_LEVEL as a dependency, but does not need dependency 1, so excludes it in its pom
* Project HIGH_LEVEL has MID_LEVEL_1 and MID_LEVEL_2 as dependencies

Now I would hope that my dependency tree would include HIGH_LEVEL, MID_LEVEL_1, MID_LEVEL_2, LOW_LEVEL, 1, and 2. Unfortunately it won't. It'll look something like this:

HIGH_LEVEL
+- MID_LEVEL_1
|  \- LOW_LEVEL
|     \- 1
\- MID_LEVEL_2

The problem, as I see it, is that Maven doesn't analyze all the dependencies. It sees LOW_LEVEL, grabs its dependencies at that point, and then once it sees LOW_LEVEL again it ignores it as well as any additional dependencies it might have (in this case, the LOW_LEVEL as a dependency of MID_LEVEL_2).

Now clearly, my projects aren't set up as well as I'd have liked. Basically, they were made before we switched over to Maven. Totally refactoring them all so that this kind of problem doesn't happen is essentially out of the question as it would take too much time.

One solution is to directly depend on the "missing" dependencies (in this case project 2). But clearly that is a very indirect dependency, and I would prefer to avoid this scenario if at all possible.

So my question: is there some maven "mode" that could help me here and transverse the entire dependency tree? I'm sure it'll take much longer, but I'm willing to let that happen under certain circumstances. Or am I just in tough luck and refactoring or careful use of exclusions is necessary?

Obviously, the example above it a toy scenario. In reality, we have many maven projects and the high-level projects don't use 90% of them. I'd like for people in charge of projects to locally decide what exclusions to use, but the problem above would cause the high-level projects to have to include many many indirect dependencies. I just don't think that would be very stable since not every developer should be expected to know the dependencies of every project.

Any insight, common experience, or solutions (!) would be greatly appreciated,

Kirk

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

Reply via email to