当前位置:  开发笔记 > 编程语言 > 正文

你怎么强迫maven MOJO在构建结束时只执行一次?

如何解决《你怎么强迫mavenMOJO在构建结束时只执行一次?》经验,为你挑选了1个好方法。

我有一个MOJO我想执行一次,并且只有在反应堆的最后一个项目的测试阶段之后运行.

使用:

if (!getProject().isExecutionRoot()) {
        return ;
}

在execute()方法的开头,意味着我的mojo被执行一次,但是在构建的最开始 - 在所有其他子模块之前.



1> npellow..:

我发现的最佳解决方案是:

/**
 * The projects in the reactor.
 *
 * @parameter expression="${reactorProjects}"
 * @readonly
 */
private List reactorProjects;

public void execute() throws MojoExecutionException {

    // only execute this mojo once, on the very last project in the reactor
    final int size = reactorProjects.size();
    MavenProject lastProject = (MavenProject) reactorProjects.get(size - 1);
    if (lastProject != getProject()) {
        return;
    }
   // do work
   ...
}

这似乎适用于我测试过的小型构建层次结构.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有