Как получить свойство командной строки для перезаписи свойства maven

У меня есть файл pom, в котором номера версий некоторых зависимостей зависят от свойства project version, указанного в настройках файла pom. Могу ли я перезаписать это через командную строку? Если да, то как?

Вот длинная история:

В настоящее время мы переводим наши проекты на maven, но пока мы еще не все. Есть несколько модулей, которые все еще не построены с maven и поэтому являются зависимостями в нашем проекте (они встроены в банки через ant). После выпуска мы хотим, чтобы все эти банки были построены и содержали тот же номер версии, что и родительский проект. Для релиза выполняются два шага (пока мы не сможем получить все с помощью maven)

  • Баки построены в ant с правильной версией выпуска (12.12.4.0).
  • Плагин релиза maven используется для развертывания проекта в нашем хранилище артефактов.

На втором этапе аргументы командной строки используются для указания выпуска:

mvn release:prepare -DreleaseVersion=12.12.4.0 -DdevelopmentVersion=12.12.4.1-SNAPSHOT -Dtag=iv-12.12.4.0

Я хочу, чтобы файл pom обновлялся с указанной версией. Однако, когда эта команда запущена, версия в файле pom (12.12.4.0-SNAPSHOT) все еще используется. Это не позволяет выполнить проверку "проверки зависимостей и плагинов для моментальных снимков", и мне необходимо разрешить мои банки, которые все еще имеют версию 12.12.4.0-SNAPSHOT, используемую из свойства версии maven.

Это привело меня к первоначальному вопросу о том, как я могу переопределить это, чтобы версия разрешилась до указанной в командной строке. Дополнительные вопросы, которые могут мне помочь, это: Как разрешить плагин релиза maven обновить файл pom до этой проверки? Как пропустить проверку моментального снимка (не желательно)

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

Мысли?

Ответ 1

Поместите параметры непосредственно в pom из командной строки, например:

mvn clean install -Dtestng.version=6.3.1

Пример:

     <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.test</groupId>
        <artifactId>test</artifactId>
        <version>1.0.0</version>
        <name>test</name>
        <properties>
                <testng.version>6.4</testng.version>
        </properties>

        <dependencies>
                <dependency>
                        <groupId>org.testng</groupId>
                        <artifactId>testng</artifactId>
                        <version>${testng.version}</version>
                        <scope>test</scope>
                </dependency>
        </dependencies>
</project>

Если вы запустите его, то будет использоваться testng версия 6.4. Но если вы запустите его как: mvn clean install -Dtestng.version=6.3.1 testng version 6.3.1 будет использоваться.

См. Настройка параметров Maven в Jenkins