В такой ситуации может потребоваться использовать B или C в более старой версии, чтобы оба зависели от совместимых версий D.

тим, у меня есть четыре проекта:

Проект A (зависит от B и D)Проект B (зависит от D)Проект C (зависит от D)Проект D

В этом сценарии, если я запускаю проект A, Maven правильно разрешит зависимость от D. Если я правильно понимаю, Maven всегда берет зависимость с кратчайшим путем. Поскольку D является прямой зависимостью от A, она будет использоваться вместо D, который указан в B.

Но теперь предположим эту структуру:

Проект A (зависит от B и C)Проект B (зависит от D)Проект C (зависит от D)Проект D

В этом случае пути к разрешению D имеют одинаковую глубину. То, что происходит, - то, что у Maven будет конфликт. Я знаю, что можно сказать Мавену, что он должен исключить зависимости. Но мой вопрос, как решить такие проблемы. Я имею в виду, что в реальных приложениях у вас много зависимостей и, возможно, много конфликтов.

Является ли решение наилучшей практики действительно исключать вещи или есть другие возможные решения для этого? Мне очень трудно иметь дело с тем, когда я неожиданно получаю исключение ClassNotFound, потому что некоторые версии изменились, из-за чего Maven взял другую зависимость. Конечно, зная этот факт, немного легче догадаться, что проблема в конфликте зависимостей.

Я использую Maven 2.1-SNAPSHOT.

Ответы на вопрос(5)

Ваш ответ на вопрос