我正在开发一个 Maven 插件,它由 3 个继承 AbstractMojo
的 mojos 组成。
长话短说,这 3 个魔力用于:
- 编译一些常规脚本
- 使用从编译中提取的数据生成 SQL 脚本
- 将这些脚本加载到数据库
之前,我的第二个mojo继承了第一个,第三个继承了第二个,他们都在他们的execute()
方法中调用了super.execute()
,所以它们可以相互级联。
我正在重写插件以使其更简洁、设计更好,因此我删除了继承并希望依赖 Maven native 生命周期,将 3 个 mojos 绑定(bind)到 compile
、package
和 deploy
阶段。
我面临的问题是我无法找到一种干净的方法来将我在第一个 mojo 执行期间提取的数据传递给第二个 mojo(例如文件扩展名,如果文件已正确编译,包路径等) ). Maven 插件 API 中是否有可用的临时存储或缓存系统?
最佳答案
由于没有直接的方法在 Maven mojo 之间共享数据,我选择将需要传递给下一个 Mojo 的数据写入 CSV 文件(XML、YAML 或任何其他格式也可以完成这项工作)。
与通过执行使用存储在内存中的某些缓存或上下文相比,优势在于您可以执行一个目标,将其结果保存在文件系统中,然后在以后的任何时间执行以下目标。
关于java - 通过 Maven 插件执行在 Mojo 之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21115409/