2013-08-30 3 views
6

Существует ли допустимый вариант использования двух разных версий одного и того же артефакта в разделе управления зависимостями вашего POM?Maven - несколько версий артефакта в управлении зависимостями

Я смотрю проект, чей корень POM содержит такой пример. Сам проект имеет несколько модулей, использующих разные версии этой «дублированной зависимости». Некоторые из модулей, таким образом, должны явно указывать версию артефакта среди своих зависимостей, чтобы различать их.

Если POM-файлы модулей должны указывать версию в любом случае, в чем причина дублирования в управлении зависимостями родителя? Зависимость будет выглядеть правильно, даже если она была удалена из управления зависимостями, поэтому зачем вам дублировать ее там в первую очередь?

Я просто пытаюсь выяснить, является ли это хорошей практикой или есть лучшее решение такой ситуации.

ответ

7

На самом деле, если вы используете Maven3 +, вы получите предупреждение, как это:

[WARNING] 
[WARNING] Some problems were encountered while building the effective model for groupId:artifactId:jar:1.0-SNAPSHOT 
[WARNING] 'dependencyManagement.dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: junit:junit:jar -> version 3.8.1 vs 3.0 @ line 15, column 18 
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. 
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects. 
[WARNING] 

Maven подберут первый, поэтому никогда не будет использоваться второй. Просто удалите его, чтобы предотвратить больше путаницы :)