Должны ли диапазоны версий зависимостей Maven считаться устаревшими? - PullRequest
13 голосов
/ 24 августа 2011

Учитывая, что очень трудно найти что-либо о диапазонах версий зависимостей в официальной документации (лучшее, что я могу придумать, это http://docs.codehaus.org/display/MAVEN/Dependency+Mediation+and+Conflict+Resolution), Интересно, они все еще считаются гражданами 1-го класса POM Maven.

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

Ответы [ 3 ]

9 голосов
/ 24 августа 2011

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

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

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

7 голосов
/ 24 августа 2011

Я не знаю, почему вы считаете, что диапазоны версий не документированы. В документации Maven Complete Reference содержится конкретный реферат.

Тем не менее - огромная проблема (на мой взгляд) заключается в том, что задокументировано, что «Разрешение диапазонов зависимостей не должно преобразовываться в моментальный снимок (версия для разработки), если он не включен в качестве явной границы». (ссылка, которую вы предоставили), но система ведет себя иначе. Если вы используете диапазоны версий, вы получите версии SNAPSHOT, если они существуют в вашем диапазоне ( MNG-3092 ). Дискуссия, разыскивается это или нет, еще не закончилась.

В настоящее время - если вы используете диапазоны версий - вы можете получить зависимости SNAPSHOT. Таким образом, вы действительно должны быть осторожны и решить, если это нужно. Это может быть полезно для ваших собственных разработанных зависимостей, но я сомневаюсь, что вы должны использовать его для сторонних библиотек.

1 голос
/ 30 апреля 2012

Диапазоны версий - единственная причина, по которой Maven все еще полезен. Даже отказ от их использования является плохой практикой, поскольку приводит вас к катастрофе многомодульных сборок, нефункциональных родительских помпов, сборок, которые занимают 10 минут или дольше, плохо структурированных проектов, таких как Spring, Hibernate и Wicket, о которых мы расскажем в нашем Illegal. Аргумент подкаста.

Чтобы ответить на ваш вопрос, они не устарели и активно используются во многих проектах (за исключением случаев, когда Sonatype допускает повреждение метаданных в Apache Maven Central).

Если вы хотите действительно хороший пример не многомодульной сборки (только для реактора.xml), в которой широко используются диапазоны версий, посмотрите Sticky code (http://code.google.com/p/stickycode/)

...