我有一个项目(这里称为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; /目标>
<来源>
<信源>目标/生成来源< /源>
< /来源>
< /结构>
< /执行>
< /处决>
< /插件>
答案 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,这是一项更多的工作。