重新运行Spring Boot配置注释处理器以更新生成的元数据


101

我已经添加:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

pom.xml每次intellij的请求/警告。

现在,我看到“重新运行Spring Boot配置注释处理器以更新生成的元数据”。

我该怎么intellij办?

B.2使用注释处理器生成您自己的元数据的链接没有说明。

Answers:


61

遵循以下说明对我有用:http : //www.mdoninger.de/2015/05/16/completion-for-custom-properties-in-spring-boot.html

关于必须重新运行注释处理器的消息有点令人困惑,因为即使没有任何更改,它也始终保持存在。

关键似乎是在添加所需的依赖项或进行任何属性更改后重建项目。完成此操作并返回到YAML文件之后,我的所有属性现在都链接到配置类。

您可能还需要在Maven窗格中单击“重新导入所有Maven项目”按钮,以获取.yaml文件视图,以识别回到相应Java类的链接。


因此,没有办法摆脱这个消息吗?
OrangeDog

1
@OrangeDog不是我可以找到。我已经学会了忽略它,但是您总是可以向JetBrains提出功能请求。您可能会想,他们对此可能会更聪明,并且仅在知道类文件或配置文件已实际更改的情况下才显示它
Patrick Herrera 2015年

1
重建项目后,错误消息仍保留在那里。
肯特·布尔

3
“关键似乎是重建项目”对我有所帮助。该消息仍然存在,但是至少我的application.properties文件中的自定义属性的自动完成开始起作用。
Ruslan Stelmachenko

1
我使用IDEA 2018.3,并且在短信后有一个链接“隐藏通知”。看来JetBrains使信息可关闭:-)
Marcus K.19年

18

没有答案对我有用。如果只想禁用该消息,请转到Intellij首选项->编辑器->常规->外观,取消选中“显示Spring Boot元数据面板”。

但是,如果该消息不会给您带来太多麻烦,那么您也可以使用它,以确保您不会错过任何您可能感兴趣的其他Spring Boot元数据消息。


4
该复选框带有IDEA 2017.2,位于“首选项”->“语言和框架”->“ Spring”->“ Spring Boot”下
oleh

15

您可以通过以下方式在IntelliJ中启用注释处理器:

  1. 点击文件
  2. 点击设置
  3. 在左上角的小搜索框中,搜索“注释处理器”
  4. 选中“启用注释处理”
  5. 点击确定

11

我遇到过同样的问题。问题在于Spring Boot注释处理器会spring-configuration-metadata.json在您的/target/classes/META-INF文件夹内生成文件。

如果您碰巧像我一样忽略了IntelliJ中的此文件夹(因为到底谁在乎类文件?),那么您的IDE将不会为该文件建立索引。因此,没有完成,而烦人的消息。

只需target从位于中的忽略文件/文件夹列表中删除即可Settings > Editor > File Types > Ignore files and folders


2
target在忽略的文件中看不到。.gitignore虽然在我身上。
埃里克·弗朗西斯

target/在我的情况下被排除在外,并且一切正常。
Amr Mostafa

3
无论是否排除目标都将使用它(我是负责此功能的开发人员)。如果您可以重现此错误行为,请提交错误报告。
YannCébron'16

1
那么哪个版本的IntelliJ正常运行?
马克思

2
@YannCébron同样在这里,还有gradle。该文件是在./build/classes/java/main/META-INF/spring-configuration-metadata.json中创建的,但是IntelliJ并未考虑到它。如果我手动将json文件移动到src / main / resources / META-INF,则它可以工作(配置不再发黄)
Costi Muraru,

9

这些选项都不适合我。我发现注释处理器的自动检测非常困难。我最终在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>

6
这个为我工作。我使用annotationProccessorPaths而不是定义单个类。<annotationProcessorPaths><path><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><version>${parent.version}</version></path>...
的Firat KUCUK

1
  1. 包括对spring-boot-configuration-processor的依赖
  2. 在IDEA的Maven窗格中单击“重新导入所有Maven项目”
  3. 重建项目

0

对我来说,其他答案无效。我不得不去打开FilesInvalidate caches and restart在Intellij上做。之后,一切再次正常。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.