С Maven 2, должны ли быть повторно объявлены зависимости, если они доступны транзитивно? - PullRequest
1 голос
/ 13 января 2011

Я обычно нахожусь в ситуации, когда зависимость, необходимая в модуле верхнего уровня, доступна, потому что один из модулей, от которых он зависит, имеет такую ​​же зависимость.

Например:

my-module
+- spring-core
   \- commons-logging

Если предположить, что я доволен версией транзитивной зависимости, следует ли переопределить эту зависимость в данном случае на commmons-logging следующим образом:

my-module
+- spring-core
|  \- commons-logging
\- commons logging  

Или я просто должен признать, что зависимость будет получена транзитивно?

Ответы [ 2 ]

3 голосов
/ 13 января 2011

IMO, лучше объявить это явно, чтобы иметь возможность контролировать точную версию, которую вы используете. В противном случае фактическая используемая версия может автоматически изменяться всякий раз, когда обновляется другая зависимость или вводится новая, казалось бы, не связанная зависимость, которая транзитивно зависит от более новой версии другой библиотеки.

1 голос
/ 13 января 2011

Я обычно оставляю их транзитивно.

Это может иметь смысл, если вы хотите переопределить конкретную версию.Например, если Spring-core, например, требуется регистрация общего достояния с версией 1.25, и вам нужна (по разным причинам) версия 1.26, и они совместимы, вы должны игнорировать зависимость регистрации общего достояния от spring-core и объявить свою версию в pom.

То же самое, когда есть конфликт между двумя другими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...