Java MavenProject setValue未更改pom.xml

Java MavenProject setValue未更改pom.xml,java,maven,maven-plugin,mojo,Java,Maven,Maven Plugin,Mojo,我对MavenProject类有问题。我制作了一个maven插件,并使用这个类来获取pom属性,比如groupId和version。每次当我使用我的插件设置某些东西时-例如: public class versionGoal extends AbstractMojo { /** * @parameter default-value="${project}" */ private MavenProject mavenProject; /** * @throws org.apache.ma

我对MavenProject类有问题。我制作了一个maven插件,并使用这个类来获取pom属性,比如groupId和version。每次当我使用我的插件设置某些东西时-例如:

public class versionGoal extends AbstractMojo {

/**
 * @parameter default-value="${project}"
 */
private MavenProject mavenProject;

/**
 * @throws org.apache.maven.plugin.MojoExecutionException
 */
public void execute() throws MojoExecutionException
{
    this.mavenProject.setVersion("9.0.0");
}
}

执行后,例如在测试阶段,没有任何变化。但是,如果我尝试在代码行this.mavenProject.setVersion(“9.0.0”)之后添加代码行:mavenProject.getVersion(),则返回我“9.0.0”,但pom.xml不会更改

可能是一些愚蠢的错误,我知道:)我知道存在版本maven插件,但我不想使用它

谢谢你的帮助

您正在更改内存中的数据: 您必须使用来保存更改或添加

注意:如果您更改
version
之类的内容,这可能是一种非常糟糕的做法,除非您非常明确地将该行为视为副作用

将提供的模型写入指定文件

void    write(File output, Map<String,Object> options, Model model)
void写入(文件输出、映射选项、模型)
将提供的模型写入指定的字节流

void    write(OutputStream output, Map<String,Object> options, Model model)
void写入(OutputStream输出、映射选项、模型)
将提供的模型写入指定的字符编写器

void    write(Writer output, Map<String,Object> options, Model model)
void写入(写入器输出、映射选项、模型)

这在JavaDoc中很容易找到,首先,为什么不使用版本maven插件,而不是你想让它与众不同,为什么?当然,您不能简单地更改pom,因为在运行时内,您只能访问pom的加载值,而不能访问硬盘上的文件。此外,为什么您使用旧式XDoclect样式而不是。在您使用了上述所有内容之后,您的评论和许多其他内容都消失了。版本maven插件使用特殊的东西来保存这些信息等。阅读JavaDoc,你需要做更多的事情,它们在那里解释得很好,我不打算重复这项工作。