Maven:我的 mojo 如何访问自己的资源?
Posted
技术标签:
【中文标题】Maven:我的 mojo 如何访问自己的资源?【英文标题】:Maven: How can my mojo access its own resources? 【发布时间】:2011-01-19 04:29:56 【问题描述】:我有一个项目(这里称为 my-artifact),它需要从模型文件生成源代码。我已经创建了一个 maven-plugin (my-code-generator),它的使用方法如下面的 pom.xml 摘录中所述。它从 my-artifact 的资源中加载和处理 model.xml,并使用插件中存储的一些预定义模板生成代码。问题是 my-code-generator 如何访问这些模板,因为它们不在项目资源中,而是在它自己的资源中。
提前致谢
【问题讨论】:
@anonymous,所以模板在您自己创建的 Maven 插件中? 【参考方案1】:通过将它们包含在插件的 jar 文件中并通过类路径、ClassLoader.getResourceAsStream 引用它们。
通过将它们打包为另一个工件,将它们声明为依赖项,并调用依赖项解析 API,这需要更多的工作。
【讨论】:
谢谢,getClass().getResourceAsStream("template.tmpl") 为我工作。【参考方案2】:只需使用 ClassLoader,即可从 MyCodeGenerator Maven 插件获取资源。
在你的 MyCodeGeneratorMojo 中添加类似的东西
URL getTemplate(String fileName)
return this.getClass().getResource(fileName);
在 MyCodeGenerator Maven 插件中,将模板添加到 src/main/resources
目录(不要忘记在该目录中使用正确的包条目(目录))。
【讨论】:
以上是关于Maven:我的 mojo 如何访问自己的资源?的主要内容,如果未能解决你的问题,请参考以下文章
如何从自定义 maven mojo 创建 maven 配置文件
如何在 Maven mojo 中使用 MavenBuildHelper
Maven(Eclipse / Mojo)中的错误状态与代码生成(OpenAPI 5.3)和自定义模板混淆