我正在尝试使注释处理器从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命令实现吗?谢谢。
您可以将以下配置与maven-compiler-plugin一起使用。
<generatedSourcesDirectory>
${project.basedir}/src/main/java
</generatedSourcesDirectory>
检查下面的链接以完成实施。https://www.thetechnojournals.com/2019/12/annotation-processor-to-generate-dto.html