【问题标题】:Maven: How can my mojo access its own resources?Maven:我的 mojo 如何访问自己的资源?
【发布时间】: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.mojo
build-helper-maven-plugin


添加来源
生成源

添加来源

目标/生成源

配置>
执行>
执行>

【问题讨论】:

  • @anonymous,所以模板在您自己创建的 Maven 插件中?

标签: maven-2 maven-plugin mojo


【解决方案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 目录(不要忘记在该目录中使用正确的包条目(目录))。

【讨论】:

    猜你喜欢
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 2017-12-10
    • 2016-12-03
    • 2016-03-03
    • 1970-01-01
    相关资源
    最近更新 更多