MavenProject setValue不会改变pom.xml

时间:2014-07-14 19:14:49

标签: java maven maven-plugin mojo

我的MavenProject类有问题。我创建了一个maven插件,我正在使用这个类来获取像groupId和version这样的pom属性。每当我使用我的插件设置某些东西时 - 例如:

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");
}

}

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

可能这是一个愚蠢的错误,我知道:)我知道存在版本maven-plugin,但我不想使用它。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您只是在更改内存数据:

您必须使用ModelWriter来保留更改或添加内容。

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

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

void    write(File output, Map<String,Object> options, Model model)

将提供的模型写入指定的字节流。

void    write(OutputStream output, Map<String,Object> options, Model model)

将提供的模型写入指定的字符编写器。

void    write(Writer output, Map<String,Object> options, Model model)

这可以在JavaDoc

中找到