通过Maven插件执行在Mojo之间共享数据

时间:2014-01-14 13:59:49

标签: java maven maven-plugin

我正在开发一个Maven插件,由3个mojos继承AbstractMojo组成。

长话短说,这3个mojos习惯于:

  1. 编译一些groovy脚本
  2. 使用从编译中提取的数据生成SQL脚本
  3. 将这些脚本加载到数据库
  4. 以前,我的第二个mojo继承了第一个,第三个继承了第二个,他们都在super.execute()方法中调用execute(),以便它们可以相互级联。

    我正在重写插件以使其更清晰,设计更好,因此我删除了继承并希望依赖Maven本机生命周期,将3个mojos绑定到compilepackage和{{ 1}}阶段。

    我面临的问题是我无法想出一个干净的方法来传递第二个mojo我在第一个mojo执行期间提取的数据(如文件扩展名,如果文件正确编译,包路径等) )。 Maven插件API中是否有可用的临时存储或缓存系统?

1 个答案:

答案 0 :(得分:4)

由于没有直接的方式在Maven mojos之间共享数据,我选择编写我需要传递到CSV文件中的下一个Mojo的数据(XML,YAML或任何其他格式也可以完成这项工作)。

通过执行使用存储在内存中的一些缓存或上下文的优点是,您可以执行一个目标,将其结果保存在文件系统中,然后在以后执行以下目标。