Управление зависимостями maven - новые версии и библиотеки без репо - PullRequest
1 голос
/ 31 июля 2010

Предупреждение : Я только что подобрал Maven, поэтому упомянутые вещи могут быть неправильными или не лучшими.

У меня есть проект с открытым исходным кодом среднего размера, который я перевожу в Maven из основного Управление проектами NetBeans. Это не команда разработчиков, живущая в одной комнате, это 1-5 человек в Интернете, которые делятся репозиторием SVN. Читая инструкции по зависимостям, кажется, что единственный способ получить зависимости - это получить их из онлайн-репозитория или установить их локально.

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

Другая проблема, с которой я столкнулся в репозитории maven, заключается в том, что в версиях они сильно отстают. Например, logback 0.9.18 в mvnbrowser , но официально 0.9.24 . PircBot 1.4.6 в mvnbrowser , но 1.5.0 официально . Почему такие старые версии?

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

So

  1. Как заставить все зависимости исходить от /lib, например
  2. В связанной заметке, может ли mvn строить напрямую из репозитория SVN библиотеки? Просто любопытно
  3. Существует ли автоматический способ получения новейшей версии непосредственно с сайта зависимостей / репозитория svn, если они также используют Maven? IE библиотеки, такие как commons-lang или logback
  4. Есть ли лучший способ управления зависимостями? (IE Ivy или какой-то странный вариант POM, который мне не хватает)

К вашему сведению, это Java-проект с 3-мя модулями, глобальными и специфическими зависимостями проекта.

Бонусные баллы, если он может работать с комплектной версией Maven, поставляемой с NetBeans.

Не дубликат

Ответы [ 2 ]

3 голосов
/ 31 июля 2010

Это не то, что я искал. Я хочу сохранить все зависимости в SVN по многим причинам (...)

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

Другая проблема, с которой я столкнулся в репозитории maven, заключается в том, что они довольно сильно отстают в версиях. Например, для mvnbrowser logback равен 0.9.18, но официально 0.9.24. PircBot - это 1.4.6 в mvnbrowser, но 1.5.0 официально. Почему такие старые версии?

Похоже, что mvnbrowser индексы полностью устарели (что делает его бесполезным в качестве поисковой системы хранилища), поскольку maven центральное хранилище имеет logback-core-0.9.24.jar (проект logback делает то, что необходимо сделать, чтобы это произошло), но имеет только старый pircbot-1.4.2.jar. Зачем? Спросите команду pircbot. В любом случае, вы правы, центральный репозиторий не всегда может иметь окончательные версии.

Проблема 3 в том, что у меня есть зависимости, которые даже не существуют в репозиториях, такие как Easier Java Persistence.

Да, это тоже случается.

Как заставить все зависимости приходить из / lib, например

Как уже указывалось, вам следует внимательно прочитать решение, предложенное в Maven: добавить зависимость в банку по относительному пути . Это решение не об установке библиотек в локальном репозитории , а об использовании файлового репозитория (который, таким образом, может храниться в SVN). Возможно, вы упустили момент, это соответствует вашему варианту использования. А также проверьте ответ Бретта для варианта.

Что касается примечания, может ли mvn строить напрямую из репозитория SVN библиотеки? Просто любопытно

Не получил это. Вы можете уточнить?

Существует ли автоматический способ получения новейшей версии непосредственно с сайта зависимостей / репозитория svn, если они также используют Maven? IE библиотеки, такие как commons-lang или logback

Maven поддерживает диапазоны версий , и вы можете использовать синтаксис, позволяющий использовать «любую версию, превышающую X». Но я НЕ рекомендую вообще использовать диапазоны версий для воспроизводимости сборки. Вы не хотите, чтобы сборка внезапно потерпела неудачу из-за автоматического обновления, которое произошло на вашей спине. Обновляйте только в том случае, если вам нужны исправления ошибок или новые функции, но делайте это явно (, если ничего не сломано, не исправляйте ).

Вы также можете найти упоминания маркеров версий LATEST и RELEASE. Я не рекомендую их ни по тем же причинам, что и выше, и даже меньше, поскольку они удалены из Maven 3.x .

Есть ли лучший способ управления зависимостями? (IE Ivy или какой-то странный вариант POM, который мне не хватает)

Не могу сказать за Айви. Но на земле Maven, если вы не можете разместить «корпоративный» репозиторий для своего проекта (Nexus, Archiva, Artifactory), тогда файловый репозиторий является IMO лучшим подходом.

0 голосов
/ 05 августа 2010

Настройте свой собственный репозиторий Maven.

http://archiva.apache.org/

...