【问题标题】:MavenProject setValue not change pom.xmlMavenProject setValue 不改变 pom.xml
【发布时间】:2014-09-04 19:32:09
【问题描述】:

我对 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 不会改变。

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

感谢您的帮助!

【问题讨论】:

  • 首先为什么不使用versions-maven-plugin 来代替你想要做出什么不同,为什么?当然,您不能简单地更改 pom,因为在运行时您只能访问 pom 的加载值,而不能访问硬盘驱动器上的文件。此外,您为什么使用旧式 XDoclect 样式而不是 Java 1.5 Annotations

标签: java maven maven-plugin mojo


【解决方案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 中很容易找到

【讨论】:

  • 在你用完上面所有的cmets和许多其他的东西之后就没有了。 versions-maven-plugin 使用特殊的东西来保存这些信息等。
  • 阅读 JavaDoc,你需要做的事情还有很多,那里解释得很好,我不会重复那个工作。
猜你喜欢
  • 2011-05-21
  • 2011-12-06
  • 2013-11-03
  • 2013-02-16
  • 2016-12-25
  • 1970-01-01
  • 2013-04-30
  • 1970-01-01
  • 2014-10-28
相关资源
最近更新 更多