как выпустить проект, который зависит от стороннего проекта SNAPSHOT в Maven
-
05-07-2019 - |
Вопрос
Я хотел бы выпустить проект снимка экрана '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 писал об этом некоторое время назад.
Просто установите банку с помпой, которой вы владеете. Обычно я изменяю идентификатор группы и артефакта, чтобы было ясно, что это не официальная версия, но, как правило, это лучшее решение для вашей проблемы.