Я застрял с этим некоторое время.
Я пытаюсь автоматизировать сборку и развертывание (в 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"