【发布时间】:2017-05-22 19:40:23
【问题描述】:
我创建了一个在编译阶段运行的自定义 maven 插件。插件试图在类路径上查找资源,但找不到 它。 插件:
<plugin>
<groupId>com.mygroup</groupId>
<artifactId>myplugin-maven-plugin</artifactId>
<version>0.0.1-SNAPSHOT</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
在我使用的插件代码中:
InputStream is = this.getClass().getClassLoader().getResource("myFile.txt").openStream();
执行 mvn clean 时会导致 NullPointerException 安装,尝试将 myFile.txt 放入项目的根目录 src 文件夹或 src/main/resources 文件夹。每次 getResource 返回 空值。我也尝试过使用:
InputStream is = Thread.currentThread().getContextClassLoader().getResource("myFile.txt").openStream();
还有 getResourceAsStream 但没有任何帮助。
这与编译阶段有关吗?我想 让插件根据输入文件中的属性生成代码。
谢谢!
【问题讨论】:
-
你在这里搞错了。如果您的插件将尝试通过 getResource() 访问资源...它将在它自己的 jar 中搜索或更准确地在插件类路径上搜索,但不是在正在构建的项目的类路径上。看看源码maven-resources-plugin如何访问项目的路径...
-
谢谢,但我在正在构建的项目中使用插件,因此它正在寻找正确的类路径。但是我发现了问题,我不应该在执行中指定编译阶段。因此,我将回答我自己的问题。
标签: java maven resources classpath maven-plugin