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 如何访问这些模板,因为它们不在项目资源中,而是在它自己的资源中。

提前致谢

我的组我的代码生成器0.0.1-SNAPSHOT src/main/resources/model.xml配置>生成源生成模型目标>执行>执行>插件>org.codehaus.mojobuild-helper-maven-plugin添加来源生成源添加来源目标/生成源配置>执行>执行>

【问题讨论】:

@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

我的Dojo中有一个Mojo(如何编写Maven插件)

Maven(Eclipse / Mojo)中的错误状态与代码生成(OpenAPI 5.3)和自定义模板混淆

你如何强制一个 maven MOJO 在构建结束时只执行一次?

用于读取应用程序类和生成 java 的 maven mojo