Работа с другими зависимостями в вашей собственной зависимости Maven - PullRequest
0 голосов
/ 30 сентября 2019

Я хочу повторно использовать и централизовать утилиты, созданные мной для Spring REST API, для моих будущих проектов. Вот почему я решил передать их в свой собственный проект и сделать их доступными в качестве зависимости Maven.

Эти файлы Util, например, базовая служба, базовые контроллеры также содержат аннотации Spring, т.е. мне нужны некоторые зависимости Spring вмоя Util зависимость. Теперь я немного не уверен, делаю ли я ошибку или нет.

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

Ответы [ 2 ]

1 голос
/ 01 октября 2019

Это основная концепция Maven. Ваш служебный модуль должен поставляться вместе с зависимостями Spring. Это называется transitive dependencies. Попробуйте представить себе ситуацию, когда все зависимости исключены. В этом случае никто никогда не узнает, какого рода и какая версия зависимостей Spring необходима.

У Maven очень хорошее разрешение конфликтов зависимостей. Он основан на новейшем принципе. Таким образом, вы можете легко переопределить эти версии Spring, и ваше приложение будет использовать только одну из них.

Взгляните на эти:[1] Механизм зависимости [2] Посредничество в зависимости и разрешение конфликтов

1 голос
/ 01 октября 2019

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

Когда кто-то использует вашу зависимость, он автоматически нарисует переходную зависимость от пружины. Теперь может произойти несколько случаев:

  • Если это единственная ссылка на пружину, версия просто используется в том виде, в каком вы ее указали.
  • Если в каком-то другом месте, другая версияпружины, включается Maven-посредник зависимостей. Он решает по «ближайшему лучшему» правилу, какую версию выбрать.
  • Но: вы всегда можете установить версию пружины в <dependencyManagement>, а затем перезаписать все транзитивноданные номера версий.
...