Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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

-DignoreSnapshots=true

вместо

-DallowTimestampedSnapshots=true

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

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

Ответ 4

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

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

Ответ 5

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