Java 版本未在pom.xml中更新

Java 版本未在pom.xml中更新,java,maven,maven-plugin,Java,Maven,Maven Plugin,我有一个Maven插件(com.helloworld.plugin),它从另一个Maven项目中的pom.xml读取版本。我有一个Java类HelloWorld,用于此目的,如下所示- package com.helloworld.plugin.com.helloworld.plugin; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; imp

我有一个Maven插件(
com.helloworld.plugin
),它从另一个Maven项目中的
pom.xml
读取版本。我有一个Java类
HelloWorld
,用于此目的,如下所示-

package com.helloworld.plugin.com.helloworld.plugin;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.project.MavenProject;

@Mojo(name = "say-helloworld",defaultPhase = LifecyclePhase.COMPILE)
public class HelloWorld extends AbstractMojo{

    @Component
    private MavenProject project;

    public void execute() throws MojoExecutionException, MojoFailureException {
        getLog().info("Hello World!!");

        String version = project.getVersion();
        String release = version;

        getLog().info(version);

        if(version.indexOf("-SNAPSHOT")>1) {
        release = version.substring(0, version.indexOf("-SNAPSHOT"));

        }

        //project.getProperties().setProperty("newVersion", release );
        project.setVersion(release );
        getLog().info("SNAPSHOT FOUND :: " + project.getVersion());
    }
}
我有另一个Maven项目,我在其中使用这个插件。该项目的
pom.xml
如下所示-


4.0.0
TestJava
TestJava
1.0.0-SNAPSHOT
src
maven编译器插件
3.1
1.8
1.8
com.helloworld.plugin
com.helloworld.plugin
0.0.1-快照
说helloworld
现在,当我在第二个项目上执行这个
mvn包时,我得到如下输出:

[INFO] --- com.helloworld.plugin:0.0.1-SNAPSHOT:say-helloworld (default) @ TestJava ---
[INFO] Hello World!!
[INFO] 1.0.0-SNAPSHOT
[INFO] SNAPSHOT FOUND :: 1.0.0
看起来pom.xml中的版本现在应该已经更新到2.0.0了。 但是,当我刷新pom.xml并再次打开它时,我看到版本没有改变。它仍然是1.0.0-SNAPSHOT

我尝试了两种方法:

project.getProperties().setProperty("newVersion", release);

我做错了什么

提前谢谢

注:
1.我不能使用发布插件,因为我没有使用任何SCM。

2.我尝试使用versions:set。但是,它只对版本的硬编码值有效。因此,我需要使用另一个maven插件来实现这一点。

MavenProject上的操作只更改运行时数据,而不是持久的pom.xml。此外,在新版本中,即使这样也不太可能:

MavenProject上的操作只更改运行时数据,而不是持久的pom.xml。此外,在新版本中,即使这样也很可能无法实现:

您希望实现什么?很抱歉造成混淆。我正在尝试使用我正在尝试创建的另一个插件设置新版本号。您说您不能使用
mvn versions:set
,因为它使用了硬编码版本值,但不是
project.setVersion(“2.0.0”)使用硬编码版本值?在我看来,没有办法绕过硬编码的值,您最好使用
mvn versions:set
。如果您想自动化部署过程,只需在每次运行之前编写一个bash脚本并更改版本号。我在这里使用了2.0.0,但我的目标是从当前pom.xml(我可以这样做)读取版本,并对其进行一些修改。然后用该值更改当前数据。我正在更改代码,以表示实际场景。我建议看一下pom文件中哪些可以升级/更改版本等。您希望实现什么?很抱歉造成混淆。我正在尝试使用我正在尝试创建的另一个插件设置新版本号。您说您不能使用
mvn versions:set
,因为它使用了硬编码版本值,但不是
project.setVersion(“2.0.0”)使用硬编码版本值?在我看来,没有办法绕过硬编码的值,您最好使用
mvn versions:set
。如果您想自动化部署过程,只需在每次运行之前编写一个bash脚本并更改版本号。我在这里使用了2.0.0,但我的目标是从当前pom.xml(我可以这样做)读取版本,并对其进行一些修改。然后用该值更改当前数据。我正在更改代码,以表示实际场景。我建议看一看可以升级/更改pom文件内部版本的代码。因此,在pom.xml中,re是无法更改的?我相信不是这样的。您仍然可以打开XML并手动执行,按照不同线程中的建议检查灵感。因此,在pom.XML中,re是无法更改的?我相信不是这样的。您仍然可以打开XML并手动执行,按照不同线程中的建议检查灵感。
project.setVersion(release);