![](/img/trans.png)
[英]How to do as guide "Re-run Spring Boot Configuration Annotation Processor to update generated metadata"?
[英]Re-run Spring Boot Configuration Annotation Processor to update generated metadata
我已经添加:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
根据intellij
的请求/警告到我的pom.xml
。
现在我看到“重新运行 Spring Boot 配置注释处理器以更新生成的元数据”。
我该如何做intellij
要求我做的事情?
此链接B.2 Generate your own meta-data using the annotation processor没有说明。
遵循这些说明对我有用: http ://www.mdoninger.de/2015/05/16/completion-for-custom-properties-in-spring-boot.html
关于必须重新运行注释处理器的消息有点令人困惑,因为它似乎一直停留在那里,即使没有任何改变。
关键似乎是在添加所需的依赖项或进行任何属性更改后重建项目。 完成此操作并返回 YAML 文件后,我的所有属性现在都链接到配置类。
您可能还需要单击 Maven 窗格中的“重新导入所有 Maven 项目”按钮以获取 .yaml 文件视图以识别返回到相应 Java 类的链接。
这些选项都不适合我。 我发现注释处理器的自动检测非常不稳定。 我最终在 pom.xml 文件中创建了一个插件部分,该部分明确设置了用于项目的注释处理器。 这样做的好处是您不需要依赖任何 IDE 设置。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<compilerVersion>1.8</compilerVersion>
<source>1.8</source>
<target>1.8</target>
<annotationProcessors>
<annotationProcessor>org.springframework.boot.configurationprocessor.ConfigurationMetadataAnnotationProcessor</annotationProcessor>
<annotationProcessor>lombok.launch.AnnotationProcessorHider$AnnotationProcessor</annotationProcessor>
<annotationProcessor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</annotationProcessor>
</annotationProcessors>
</configuration>
</plugin>
没有一个答案对我有用。 如果您只想禁用该消息,请转到 Intellij Preferences -> Editor -> General -> Appearance,取消选中“Show Spring Boot metadata panel”。
但是,如果它不会给您带来太多困扰,您也可以接受该消息,以确保您不会错过您可能感兴趣的任何其他 Spring Boot 元数据消息。
您可以通过以下方式在 IntelliJ 中启用注释处理器:
我遇到过同样的问题。 问题是 Spring Boot 注释处理器在/target/classes/META-INF
文件夹中生成spring-configuration-metadata.json
文件。
如果你碰巧像我一样忽略了 IntelliJ 中的这个文件夹(因为到底是什么,谁在乎类文件?),你的 IDE 不会索引该文件。 因此,没有完成,烦人的消息。
只需从位于Settings > Editor > File Types > Ignore files and folders
的忽略文件/文件夹列表中删除target
。
对我来说,其他答案不起作用。 我不得不去打开Files
并在 Intellij 上执行Invalidate caches and restart
。 在那之后,一切都恢复正常了。
在build.gradle
中包含了对spring-boot-configuration-processor
的依赖:
annotationProcessor "org.springframework.boot:spring-boot-configuration-processor:2.4.1"
除了使 IntelliJ 的缓存无效并重新启动之外,唯一对我有用的是
Reload All Gradle Projects
Clean
Build
我只是需要
@EnableConfigurationProperties({MY_PROPS_CLASS.class})
在主应用程序类中,它帮助我解决了这个问题
我在使用 Gradle 和 Kotlin 时遇到了类似的问题。 您应该修改build.gradle.kts
文件以包含以下内容:
//build.gradle.kts
plugins {
// ...
kotlin("kapt") version "1.5.31"
}
dependencies {
// ...
kapt("org.springframework.boot:spring-boot-configuration-processor")
}
然后,生成注释:
./gradlew kaptKotlin
参考资料: https ://spring.io/guides/tutorials/spring-boot-kotlin/#_configuration_properties
我有同样的问题。 就我而言,我错过了 spring-boot-maven-plugin。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
以及@Data Lombok 注释
@Configuration
@ConfigurationProperties("logging.web")
@Data
public class LoggingWebConfiguration {
// ...
}
显然,您也可以自己创建 getter/setter。
然后您还必须记住重新导入并重新编译您的项目。
以上都不适用于我的情况,但让我很接近。 最后,在 maven-compiler-plugin 中明确定义所有必需的 annotationProcessors 为我解决了这个问题。 就我而言,这是:Spring-Boot + Lombok + MapStruct
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<annotationProcessorPaths>
<annotationProcessorPath>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>${spring-boot-configuration-processor.version}</version>
</annotationProcessorPath>
<annotationProcessorPath>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</annotationProcessorPath>
<annotationProcessorPath>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</annotationProcessorPath>
</annotationProcessorPaths>
</configuration>
</plugin>
在此之前,我总是在 application.properties 的 Class + 中收到一些警告,一些属性被标记为“未使用”,即使它们是在使用 @ConfigurationProperties 的类中定义的
在 Idea 的 maven 面板中,在 maven 生命周期中清理和编译对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.