使注释处理器在Maven Update上读取src / main / resources文件的方式

问题描述 投票:0回答:1

我正在尝试使注释处理器从src / main / resources包中读取文件。我用来读取文件的代码是:

resource = processingEnv.getFiler().getResource(StandardLocation.CLASS_OUTPUT, "", fileName);

注释处理器由maven-processor-plugin执行:

<plugin>
    <groupId>org.bsc.maven</groupId>
    <artifactId>maven-processor-plugin</artifactId>
    <version>3.3.3</version>
    <executions>
        <execution>
            <id>process</id>
            <goals>
                <goal>process</goal>
            </goals>
            <phase>compile</phase>
            <configuration>
                        <outputDirectory>target/generated</outputDirectory>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
        ...
        </dependency
    </dependencies>
</plugin>

但是,当通过Maven更新命令(通过Eclipse IDE)触发处理器时,处理器会抛出IO异常,表明资源文件不存在。

我必须分别触发每个java文件,以便处理器查找资源文件。

我相信此问题是由于处理器默认情况下在“生成源”阶段运行,而直到“ process-resources”才检测到资源。请注意:https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Plugins

我曾尝试更改pom文件中的相位,但无济于事。有类似的帖子,但没有提供定义的解决方案:Need file from src/main/resources in generate-sources phase for annotation processor config奇怪的是,当我运行其他maven命令(如编译或安装)时,处理器可以读取资源文件(只是不能通过Maven Update)。有什么解决方案可以通过Maven Update命令实现吗?谢谢。

java eclipse maven classpath annotation-processing
1个回答
0
投票

您可以将以下配置与maven-compiler-plugin一起使用。

<generatedSourcesDirectory>
     ${project.basedir}/src/main/java
</generatedSourcesDirectory>

检查下面的链接以完成实施。https://www.thetechnojournals.com/2019/12/annotation-processor-to-generate-dto.html

© www.soinside.com 2019 - 2024. All rights reserved.