как выпустить проект, который зависит от стороннего проекта SNAPSHOT в Maven - PullRequest
48 голосов
/ 29 октября 2008

Я хотел бы выпустить снимок проекта 'foo-1.0-SNAPSHOT', используя плагин релиза maven. Проект зависит от стороннего модуля 'bar-1.0-SNAPSHOT', который еще не выпущен. Я использую опцию allowTimestampedSnapshots в pom.xml моего проекта, чтобы разрешить снимки с метками времени, но я предполагаю, что сторонний модуль (панель) не помечается метками времени, пока я сам не создаю его, поскольку maven все еще жалуется на неразрешенные зависимости SNAPSHOT.

Есть ли способ освободить проект foo независимо от зависимых проектов SNAPSHOT, и если нет, то как я могу добавить метку времени в сторонний проект?

Ответы [ 5 ]

147 голосов
/ 18 октября 2010

Проблема с именем параметра allowTimestampedSnapshots, это в документации, но источник плагина использует другое имя параметра в выражении - ignoreSnapshots.

Так что просто используйте -DignoreSnapshots=true, и цель подготовки плагина релиза будет игнорировать зависимости моментальных снимков.

17 голосов
/ 11 мая 2011

Использование опции maven-release-plugin

-DignoreSnapshots=true

вместо

-DallowTimestampedSnapshots=true

помогло в моем случае, это позволит использовать зависимости с версией моментального снимка для подготовки и выполнения релиза.

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

8 голосов
/ 31 октября 2008

Краткий ответ: следующий ответ .... длинный ответ: вы можете обойти это.

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

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

6 голосов
/ 08 ноября 2008

В предыдущем ответе предлагалось изменить идентификатор группы и артефакта ... не делайте этого, поскольку maven не распознает его как тот же артефакт позже, когда эта зависимость будет освобождена, и у вас останется две копии в пути к классам. , Мой предпочтительный метод - изменить только версию, и я сделаю что-то вроде: [оригинальная версия] - [мое имя организации] - [версия svn, из которой я его извлек], чтобы я получил что-то вроде 1.0-SONATYPE-3425. Используя svn rev, я всегда могу снова извлечь источник и исправить его, если необходимо, и точно знать, что я использую, не перетаскивая весь источник в свой svn.

Обновление - я написал об этом некоторое время назад.

0 голосов
/ 01 ноября 2008

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

...