Не удается получить доступ к значению parsedVersion в свойствах pom

Я использую плагин maven:

            <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
                <execution>
                    <id>parse-version</id>
                    <goals>
                        <goal>parse-version</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

разобрать версию проекта. Работает нормально:

[INFO] --- build-helper-maven-plugin:3.0.0:parse-version (parse-version)
[INFO]
[INFO] --- maven-antrun-plugin:1.1:run (default)
[INFO] Executing tasks

 [echo] Major: 2
 [echo] Minor: 0
 [echo] Incremental: 0
 [echo] Qualifier: SNAPSHOT
 [echo] BuildNumber: 0

но если я хочу использовать свойство parsedVersion.majorVersion в свойствах профиля, оно не может быть разрешено.

    <profiles>
    <profile>
        <id>local</id>
        <properties>
            <majorVersion>${myMajorVersion}</majorVersion>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
</profiles>

<properties>
    <myMajorVersion>${parsedVersion.majorVersion}</myMajorVersion>

Любая идея?

1 ответ

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

Вероятно, вы можете установить свойство на основе регулярного выражения, используя build-helper:regex-property Mojo (см. https://www.mojohaus.org/build-helper-maven-plugin/regex-property-mojo.html). ). В своем профиле вы можете установить для свойства фиксированное значение, а в регулярном выражении, если значение совпадает, замените его нужным проанализированным значением. Пока значение свойства, которое вы устанавливаете, используется после этапа проверки, оно будет установлено на правильное значение там, где оно используется.

Другие вопросы по тегам