我试图让注释处理器从 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/