Maven исключения лучшие практики - PullRequest
3 голосов
/ 06 мая 2011

Я использую Maven2.Когда я смотрю на вывод mvn dependency:tree -Dverbose, я вижу много:

[INFO] +- org.springframework:spring-orm:jar:3.0.5.RELEASE:compile
[INFO] |  +- (org.springframework:spring-beans:jar:3.0.5.RELEASE:compile - omitted for duplicate)
[INFO] |  +- (org.springframework:spring-core:jar:3.0.5.RELEASE:compile - omitted for duplicate)
[INFO] |  +- (org.springframework:spring-jdbc:jar:3.0.5.RELEASE:compile - omitted for duplicate)
[INFO] |  \- (org.springframework:spring-tx:jar:3.0.5.RELEASE:compile - omitted for duplicate)

Все они также включены в мой pom как зависимости.Мой вопрос заключается в том, какую политику придерживаться, оставлять ее, исключать только конфликты версий или исключать каждую транзитивную зависимость.

Я не вижу ничего, связанного с этим, в руководстве.* Спасибо!

Ответы [ 3 ]

2 голосов
/ 07 мая 2011

Двойственность зависимостей не проблема с maven - так что вы можете оставить все как есть.(Все остальные артефакты зависят от apache.logging - вам не нужно об этом беспокоиться, maven позаботится о вас)

Вам просто нужно решить конфликт версий, или вы можете опустить зависимости, которые будут предоставлены при запуске.environment.

Рекомендуется (как указано в krosenvold):

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

И не беспокойтесь о двуличности в дереве зависимостей

1 голос
/ 06 мая 2011

Вы должны (как минимум) включать любую зависимость, содержащую файл класса Java, на который непосредственно ссылается ваш код. Поэтому любой класс, на который ссылается ваш источник, должен быть определен.

Это создает определенную инкапсуляцию определений зависимостей; Ваш проект отвечает за определение своих собственных зависимостей, и они снова определяют свои зависимости. Это то, что зависит от mvn: анализ говорит вам.

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

А иногда вам просто нужно что-то включить, чтобы получить соответствующую версию (на ум приходят драйверы баз данных).

Но минимальный список зависимостей четко определен.

0 голосов
/ 06 мая 2011

В случае, если вы указали там, вам нужно только дать зависимость, что означает дать только зависимость для org.springframework: spring-orm: jar: 3.0.5.RELEASE: компилировать, но не для других.Это сделает вашу помпу стройной ...

...