Maven игнорирует переменные в дочернем pom - PullRequest
0 голосов
/ 31 мая 2019

Я застрял с этим некоторое время. Я пытаюсь автоматизировать сборку и развертывание (в nexus3) нескольких java-модулей и устранить необходимость вручную устанавливать версию модуля в проектах pom.

Моя проблема в том, что maven игнорирует переменные внутри файлов pom.

Родительский пом:

<properties>
  <revision>local</revision>
</properties>

<name>lib-cloud</name>
<groupId>com.company.lib</groupId>
<artifactId>lib-cloud</artifactId>
<version>${revision}</version>
<packaging>pom</packaging>
<modules>
    <module>lib-cloud-main</module>
</modules>

и ребенок пом:

<properties>
    <unrelatedVAR>2017.3.3</unrelatedVAR>
</properties>

<parent>
    <groupId>com.company.lib</groupId>
    <artifactId>lib-cloud</artifactId>
    <version>${revision}</version>
</parent>

<artifactId>lib-cloud-main</artifactId>
<name>lib-cloud-main</name>

и затем я строю это с:

mvn -Drevision=3.1 clean package deploy

Это просто соберите код, создайте lib-cloud-main / target / lib-cloud-main-3.1.jar

В банке я уже вижу, что lib-cloud-main-3.1.jar / maven / com.company.lib / lib-cloud-main / pom.xml имеют

<version>${revision}</version>

В качестве версии вместо 3.1, как я и ожидал, но все же этот артефакт удается сохранить в нексусе.

Однако, если я пытаюсь использовать его, maven выдает ошибку при попытке получить pom:

[ERROR] Failed to execute goal on project core-backend-api: Could not resolve dependencies for project com.company.core:core-backend-api:jar:local: Failed to collect dependencies at com.company.lib:lib-cloud-main:jar:3.1: Failed to read artifact descriptor for com.company.lib:lib-cloud-main:jar:3.1: Could not transfer artifact com.company.lib:lib-cloud:pom:${revision} from/to company-maven-public (http://mvn.company.local/repository/maven-public/): Failed to transfer file: http://mvn.company.local/repository/maven-public/com/company/lib/lib-cloud/$%7Brevision%7D/lib-cloud-$%7Brevision%7D.pom. Return code is: 400 , ReasonPhrase:Invalid repository path.

Я даже пытался использовать

mvn release:update-versions -DdevelopmentVersion=3.1

Как способ перезаписи poms со статическим значением перед сборкой, но этот метод ВСЕ ЕЩЕ не трогает тег в любом дочернем pom проекта.

Что я делаю не так?

Apache Maven 3.5.4 (Red Hat 3.5.4-4) Дом Maven: / usr / share / maven Java версия: 1.8.0_212, поставщик: Oracle Corporation, время выполнения: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.fc29.x86_64/jre Локаль по умолчанию: pt_BR, кодировка платформы: UTF-8 Имя ОС: "linux", версия: "5.0.17-200.fc29.x86_64", арка: "amd64", семейство: "unix"

1 Ответ

0 голосов
/ 31 мая 2019

Вы должны использовать релиз плагин , чтобы сделать это. mvn release:update-versions -DautoVersionSubmodules=true

...