Maven:我的mojo如何访问自己的资源?

时间:2010-02-20 19:13:53

标签: maven-2 maven-plugin mojo

我有一个项目(这里称为my-artifact)需要从模型文件生成源代码。我已经创建了一个maven-plugin(my-code-generator),如下面的pom.xml摘录中所述。它从my-artifact的资源加载和处理model.xml,并使用插件中存储的一些预定义模板生成代码。问题是我的代码生成器如何访问这些模板,因为它们不在项目资源中,而是在自己的资源中。

提前致谢

<插件>
<的groupId>我的基团< /&的groupId GT;
< artifactId的>我码发生器及LT; / artifactId的>
<版本> 0.0.1-快照LT; /版本>
<结构>
< modelfile>
SRC /主/资源/ model.xml
< / modelDir>
< /结构>
<处决>
<执行>
<阶段>生成来源< /阶段>
<目标>
<目标>生成模型< /目标>
< /目标>
< /执行>
< /处决>
< /插件>
<插件>
<&的groupId GT; org.codehaus.mojo< /&的groupId GT;
< artifactId的>建立辅助-行家-插件< / artifactId的>
<处决>
<执行>
< ID>添加源和LT; / ID>
<阶段>生成来源< /阶段>
<目标>
<目标>添加源和LT; /目标>
<来源>
<信源>目标/生成来源< /源>
< /来源>
< /结构>
< /执行>
< /处决>
< /插件>

2 个答案:

答案 0 :(得分:5)

只需使用ClassLoader,即可从MyCodeGenerator Maven插件中获取资源。

将类似内容添加到MyCodeGeneratorMojo

    URL getTemplate(String fileName) {
        return this.getClass().getResource(fileName);
    }

在MyCodeGenerator Maven插件中,将模板添加到src/main/resources目录(不要忘记在该目录中使用正确的包条目(目录))。

答案 1 :(得分:3)

将它们包含在插件的jar文件中,并通过classpath通过ClassLoader.getResourceAsStream引用它们。

通过将它们打包为另一个工件,将它们声明为依赖项,并调用依赖项解析API,这是一项更多的工作。