как выпустить проект, который зависит от стороннего проекта SNAPSHOT в Maven

StackOverflow https://stackoverflow.com/questions/245932

Вопрос

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

-DignoreSnapshots=true

вместо

-DallowTimestampedSnapshots=true

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top