Maven управление зависимостями - PullRequest
1 голос
/ 28 сентября 2010

Наш проект имеет зависимость типа

  <dependency>
    <groupId>apollo.components.cots</groupId>
    <artifactId>cots-wfs</artifactId>
  </dependency>

И, насколько я понимаю, maven2 получит последний артефакт для cots-wfs, скажем, 2.3-20101111.000000-13

Проблема в том, что когда мы разветвляем проект, зависимость остается прежней, а когда другие разработчики выпускают новое cots-wfs, которое говорит 2.3-20101222.000000-13 , которое не имеет обратной совместимости, сборка выполняется сломаны.

Я пытаюсь избежать слияния кода в ветке, что больно.

Так что мне нужно сделать, чтобы "заморозить" все зависимости, когда я разветвляю проект? Есть ли простой способ сделать это?

Ответы [ 3 ]

4 голосов
/ 28 сентября 2010

И, насколько я понимаю, maven2 получит последний артефакт для cots-wfs, скажем, <version>2.3-20101111.000000-13</version>

Похоже, что вы используете SNAPSHOT зависимость для cots-wfs (2.3-SNAPSHOT), вероятно, объявленную в разделе dependencyManagement.

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

Действительно, именно поэтому вы не должны просто разветвлять артефакт с SNAPSHOT зависимостями, сборка выпущенных артефактов должна быть воспроизводимой, навсегда, и использование SNAPSHOT зависимостей побеждает это. Плагин maven release фактически запрещает выпуск POM с зависимостями SNAPSHOT.

Однако можно заблокировать SNAPSHOT зависимости, используя versions:lock-snapshots или, что еще лучше, использовать соответствующую выпущенную версию, используя versions:use-releases. Это на самом деле путь.

Кстати, плагин Maven Release может помочь автоматизировать весь процесс.

0 голосов
/ 28 сентября 2010

Да, просто добавьте тег версии к зависимости. Если вы не уверены, что номер текущей версии, то запустите «mvn help :ffective-pom», чтобы увидеть pom со всеми номерами текущей версии.

0 голосов
/ 28 сентября 2010

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

...