【问题标题】:Unable to retrieve resource in custom maven plugin during compile phase在编译阶段无法检索自定义 maven 插件中的资源
【发布时间】: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


【解决方案1】:

我找到了解决方案。首先,我认为不指定阶段时问题就消失了,但不这样做时,它根本不会执行插件。 对我来说,诀窍是简单地使用 FileInputStream("myFile.txt") 在项目根目录中有 myFile.txt 。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-03
    • 2018-03-14
    • 2011-05-06
    • 2012-06-11
    • 2018-01-24
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多