Maven:如何在Mojos之间传递参数?

Gil*_*ili 9 maven-2 maven-plugin

如何编写一个Mojo来设置另一个Mojo的配置?例如:Mojo A需要A.foo定义配置参数.用户可以A.foo手动指定或运行插件B,它将计算他/她的值.

Gil*_*ili 6

回答我自己的问题:

可以使用MavenProject实例在运行时访问插件的配置或项目范围的属性:

/**
 * The maven project.
 * 
 * @parameter expression="${project}"
 * @readonly
 */
 private MavenProject project;
Run Code Online (Sandbox Code Playgroud)

然后,您可以在运行时访问插件的配置:

private Plugin lookupPlugin(String key)
{
    List plugins = getProject().getBuildPlugins();

    for (Iterator iterator = plugins.iterator(); iterator.hasNext();)
    {
        Plugin plugin = (Plugin) iterator.next();
        if(key.equalsIgnoreCase(plugin.getKey()))
            return plugin;
    }
    return null;
}

...
Xpp3Dom configuration = (Xpp3Dom) Plugin.getConfiguration()
configuration.getChild("parameterName"); // get parameter
configuration.addChild(new Xpp3Dom("parameterName")); // add parameter
...
Run Code Online (Sandbox Code Playgroud)

注意:在当前阶段结束时将丢弃任何配置更改.

来源:从自定义mojo访问maven插件的运行时配置的最佳方式?

或者,您可以使用获取/设置项目范围的参数MavenProject.getProperties().