当我在基于aspectj-maven-plugin的maven编译过程中使用@ConfigurationProperties
时,我收到以下错误消息:
[INFO]显示类型消息的AJC消息详细信息:[error, 警告,失败] [警告]字段值处理 不支持@ConfigurationProperty元数据:
[ERROR]内部编译器错误:java.lang.IllegalStateException: 无法写入元数据 org.springframework.boot.configurationprocessor.ConfigurationMetadataAnnotationProcessor.writeMetaData(ConfigurationMetadataAnnotationProcessor.java:367)
这是我的pom设置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.8</version>
<configuration>
<forceAjcCompile>true</forceAjcCompile>
<source>${java.version}</source>
<target>${java.version}</target>
<Xlint>ignore</Xlint>
<complianceLevel>${java.version </complianceLevel>
<showWeaveInfo>true</showWeaveInfo>
<encoding>${project.build.sourceEncoding}</encoding>
<verbose>true</verbose>
<!--<aspectLibraries/>-->
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
解决方案是什么?
答案 0 :(得分:3)
Try this one: https://github.com/spring-projects/spring-boot/issues/4847
Either solution works. I indeed missed the
<sources/>
in aspectj-maven-plugin proposed in #4825or adding
<proc>none</proc>
in maven-compiler-pluginor adding both of them together.
答案 1 :(得分:0)
原因是配置元数据处理器尝试使用Filer.getResource读取它的输出资源,并在稍后的Filer.createResource上运行到etc / ajc错误https://bugs.eclipse.org/bugs/show_bug.cgi?id=530665。
解决方法可能是在通过ajc编译之前删除META-INF / spring-configuration-metadata.json。然而,这是一个糟糕的解决方案,无法在基于Maven的项目中轻松实现。