Как заставить произвольную родительскую версию при использовании версий mvn: update-parent? - PullRequest
0 голосов
/ 27 апреля 2018

(Перефразируя вопрос, чтобы лучше понять) Чтобы уточнить мою проблему, которая не была достаточно подробной, я рассмотрел следующие случаи: проекты: A и B. Корневой помпон A является родителем проекта B.

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

Если я изменяю версию A, затем меняю версию B, я получаю следующее сообщение об ошибке:

mvn versions:update-parent -DallowSnapshots -DgenerateBackupPoms=false -DparentVersion="6.4.1-SNAPSHOT" 
[WARNING] Not updating version: could not resolve any versions

Если я изменю версию A, вызову mvn clean install на A (с которой я мог бы жить, хотя я предпочел бы иметь возможность изменить версию и родителя всех моих проектов одновременно, в сценариях, без промежуточных, возможно, сборка невозможна), тогда вышеуказанная команда на B работает, но только если указанная родительская версия является последней доступной. В противном случае я получаю:

[INFO] Current version of parentGroup:parentArtifact:pom:7.0.12 is the latest.

Это означает, что я не могу использовать команду mvn versions:update-parent для изменения родительской версии в ветви обслуживания.

Есть ли способ заставить mvn versions:update-parent уважать требуемую родительскую версию? (независимо от того, находится ли он локально, в хранилище Nexus или нет вообще)


редактировать: дополнительная информация с -X (удалены ненужные части, выделено мое)

[DEBUG] Configuring mojo 'org.codehaus.mojo:versions-maven-plugin:2.5:update-parent' with basic configurator -->
[DEBUG]   (f) allowSnapshots = true
[DEBUG]   (f) generateBackupPoms = false
(...)
[DEBUG]   (f) parentVersion = 7.0.11
[DEBUG] Determining update check for artifact groupId:artifactIdProjectA (C:\Users\donckels\.m2\repository\.......\artifactIdProjectA\maven-metadata-....-repository.xml) from ....-repository (http://..../nexus/content/groups/public)
(....)
[DEBUG] Searching for ....-repository.maven-metadata-....-repository.xml.lastUpdated in resolution tracking file.
[DEBUG] Reading resolution-state from: C:\Users\donckels\.m2\repository\.....\artifactIdProjectA\resolver-status.properties
(....)
[DEBUG] Proposal is to update from 7.0.12 to 7.0.12
[INFO] Current version of groupId:artifactIdProjectA:pom:7.0.12 is the latest.

Несмотря на то, что я указал 7.0.11, он заканчивается на:

[DEBUG] Proposal is to update from 7.0.12 to 7.0.12

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

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

mvn versions:update-parent -DallowSnapshots -DgenerateBackupPoms=false -DparentVersion="[7.0.11]" 

Но родительский элемент должен иметь , который нужно построить до того, как maven выполнит обновление. В противном случае он будет игнорировать указанную версию.

0 голосов
/ 08 мая 2018

потому что версия, которую я хочу использовать, является версией, которая либо локально создана

Тогда шаг, который создает родительский элемент, должен быть не просто mvn clean build, а mvn clean install: он будет кэшировать артефакт в локальном кэше maven агента Дженкинса.

либо версия, которая будет построена позже

Тогда ваша работа должна иметь предварительный шаг создания и установки новой родительской версии, за до вашего текущего шага, вызывая mvn versions:update-parent.

Как комментирует ОП:

Точкой преткновения стал набор квадратных скобок вокруг версии, в дополнение к требованию «построено до».
Без этих квадратных скобок версия была проигнорирована, если она не была последней.

Подробнее см. " Спецификация диапазона версий "

[1.0]   x == 1.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...