Java Maven build未使用模型的更新版本(pom.xml)

Java Maven build未使用模型的更新版本(pom.xml),java,maven,pom.xml,maven-plugin,versioning,Java,Maven,Pom.xml,Maven Plugin,Versioning,我有一个maven项目,我确实从用户那里获得了新的项目版本: Current Version = 1.0.0 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>versions-maven-plugin</artifactId> <version>2.7</version> <executions>

我有一个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
当前版本=1.0.0
org.codehaus.mojo
版本maven插件
2.7
验证
设置
当前版本=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
当前版本=2.0.0
mygroup
我的神器
1.0.0
过程源
验证
当前版本=2.0.0-加法器
但当我运行其他插件时,例如:

<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> 
com.github.ekryd.echo-maven-plugin
echo maven插件
结束
回声
过程资源
${project.version}
这给了我“1.0.0”的结果,应该是“2.0.0-加法”

但是为什么呢?
如何解决这个问题?我需要所有插件都使用新版本并使用它。

您需要单独运行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

谢谢JF,还有什么可以运行“maven运行”序列的吗?例如,将我所有的maven运行放在一个文件或一个我可以运行多个“maven运行”的解决方案中。通常,你会使用像Jenkins这样的构建服务器。我正是有这个问题,我没有任何构建服务器,这使得任务有点复杂,你认为在一个shell脚本中有多个运行并通过exec插件运行它是明智的吗?(我猜不是因为exec插件也在当前运行)1,如果你做这个项目是专业的,而不是作为一个私人项目,首先建立一个构建服务器是非常有用的。2。如果你真的需要你定制的插件中的自定义逻辑,你应该仔细想想。你试图做一些违背Maven哲学的事情。很抱歉,在我写了我的评论后看到了你的最后一条评论。Gitlab应该能够构建Maven构建所需的管道,但我从未使用过它。