java - 使注释处理器读取 Maven 更新上的 src/main/resources 文件的方法

标签 java eclipse maven classpath annotation-processing

我试图让注释处理器从 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文件,以便处理器找到资源文件。

我认为这个问题是由于处理器默认运行在“生成源”阶段,而直到“进程资源”阶段才检测到资源。请注意: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 更新)。有没有什么解决方案可以通过 Maven Update 命令实现这一点?谢谢。

最佳答案

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

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

检查以下链接以了解完整实现。 https://www.thetechnojournals.com/2019/12/annotation-processor-to-generate-dto.html

关于java - 使注释处理器读取 Maven 更新上的 src/main/resources 文件的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57859819/

相关文章:

java - 如何在 JLabel 和 JTextField 上显示非科学格式的值?

java - 为什么我的 DefaultAnnotationHandlerMapping 没有被调用?

Java Tomcat "OutOfMemoryError: Java heap space"由无休止的 session 引起?

java - 如何使 Java TrayIcon 成为与对话框关联的组件?

android - 如何使用 Eclipse 在 Android 设备上运行应用程序?

eclipse - Intellij 和 Eclipse 之间的不同输出

java - BIRT 报告错误列绑定(bind)

java - log4j 与 maven tomcat7 :run but not with tomcat7:deploy 一起工作

java - '${spring.version}'的使用

maven - 如何使用 Maven TestNG 执行失败的测试用例