Сборка Maven не использует обновленную версию модели (pom. xml) - PullRequest
1 голос
/ 14 февраля 2020

У меня есть проект maven, в который я получаю новую версию проекта от пользователя:

Current Version = 1.0.0
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>versions-maven-plugin</artifactId>
    <version>2.7</version>
    <executions>
        <execution>
            <phase>validate</phase>
                    <goals>
                        <goal>set</goal>
                    </goals>
            </execution>
        </executions>
    </plugin>
Current Version = 2.0.0

, и после этого я вызвал свой собственный пользовательский плагин, который запускает набор вычислений и добавляет строку к версия

Current Version = 2.0.0
<groupId>mygroup</groupId>
    <artifactId>my artifact</artifactId>
    <version>1.0.0</version>
    <executions>
       <execution>
        <phase>process-sources</phase>
            <goals>
                <goal>validate</goal>
            </goals>
        </execution>
    </executions>
Current Version = 2.0.0-AddedString

, но когда я запускаю другие плагины, например:

<groupId>com.github.ekryd.echo-maven-plugin</groupId>
    <artifactId>echo-maven-plugin</artifactId>
        <executions>
        <execution>
            <id>end</id>
            <goals>
            <goal>echo</goal>
            </goals>
            <phase>process-resources</phase>
            <configuration>
            <message>${project.version}</message>
            </configuration>
     </execution>
</executions> 

, что дает мне результат: "1.0.0", который должен быть "2.0.0-AddedString "

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

1 Ответ

1 голос
/ 14 февраля 2020

Для этого нужны отдельные запуски Maven.

Если вы запустите что-то вроде mvn versions:set -DnewVersion=2.0.0 my:plugin, то my:plugin увидит версию, которая была до запуска команды, а не 2.0.0, которая была установлена между ними.

Поэтому, когда у вас есть цели, которые меняют POM, вам нужно вызывать их в отдельных прогонах Maven, то есть сначала mvn versions:set -DnewVersion=2.0.0, а затем mvn my:plugin.

...