source

스프링 부트 구성 주석 프로세서를 다시 실행하여 생성된 메타데이터 업데이트

bestscript 2022. 10. 23. 11:42

스프링 부트 구성 주석 프로세서를 다시 실행하여 생성된 메타데이터 업데이트

추가:

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

나 my my mypom.xml per당intellij의경 / 고고고 。

"Spring Boot Configuration Annotation Processor를 다시 실행하여 생성된 메타데이터를 업데이트합니다."라고 표시됩니다.

요?intellij한테테 부탁? ???

링크 B.2 주석 프로세서를 사용하여 자체 메타 데이터 생성에는 지침이 없습니다.

다음의 순서에 따라 주세요.http://www.mdoninger.de/2015/05/16/completion-for-custom-properties-in-spring-boot.html

Annotation Processor를 재실행해야 한다는 메시지는 변경되지 않아도 항상 그대로 있기 때문에 약간 혼란스럽습니다.

중요한 것은 필요한 종속성을 추가하거나 속성을 변경한 후 프로젝트를 재구축하는 것입니다.이렇게 하고 YAML 파일로 돌아가면 모든 속성이 설정 클래스로 링크됩니다.

Maven 페인의 'Reimport All Maven Projects' 버튼을 클릭하여 대응하는 Java 클래스로의 링크를 인식하기 위해 .yaml 파일뷰를 취득해야 할 수도 있습니다.

이 옵션들 중 어느 것도 내게는 효과가 없었다.주석 프로세서의 자동 검출이 매우 불안정하다는 것을 알게 되었습니다.프로젝트에 사용되는 주석 프로세서를 명시적으로 설정하는 플러그인 섹션을 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>

나는 어떤 대답도 통하지 않았다.메시지를 비활성화하는 경우 Intelliz Preferences -> Editor -> General -> Affairance 순으로 이동하여 Show Spring Boot 메타데이터 패널 표시를 꺼줍니다.

다만, 그 메세지가 마음에 들지 않는 경우는, 그 메세지와 함께 생활할 수도 있습니다.따라서 관심이 있는 다른 Spring Boot 메타데이터 메시지를 놓치지 않도록 하기 위해서입니다.

다음을 통해 IntelliJ에서 주석 프로세서를 활성화할 수 있습니다.

  1. 파일 클릭
  2. [설정] 을 클릭합니다.
  3. 왼쪽 상단 구석에 있는 작은 검색 상자에서 "주석 프로세서"를 검색합니다.
  4. "주석 처리 사용"을 선택합니다.
  5. [확인] 을 클릭합니다.

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Boot 가 Spring Boot를 입니다.spring-configuration-metadata.json파일링하다/target/classes/META-INF폴더입니다.

저처럼 IntelliJ에서 이 폴더를 무시한 경우(클래스 파일은 누가 신경써요?) IDE에 의해 인덱싱되지 않습니다.그래서 미완료, 짜증나는 메시지.

제거만 하면 됩니다.target[ ignore files ]목록, 에 있는Settings > Editor > File Types > Ignore files and folders.

저는 다른 답변이 통하지 않았습니다.나는 문을 열러 가야 했다.Files하고 있다Invalidate caches and restart인텔리지에 있습니다.그 후, 모든 것이 잘 돌아갔습니다.

  1. spring-boot-configuration-processor 의존관계 포함
  2. IDEA의 [Maven]페인으로 [Remport All Maven Projects]을 클릭합니다.
  3. 프로젝트 재구축

에 대한 의존성을 포함시킨 경우spring-boot-configuration-processorbuild.gradle:

annotationProcessor "org.springframework.boot:spring-boot-configuration-processor:2.4.1"

인텔리J의 캐시를 무효화하고 재기동하는 것 외에 나에게 효과가 있었던 것은

  1. 사이드 패널의 [Refresh]버튼Reload All Gradle Projects
  2. 그라들 태스크Clean
  3. 그라들 태스크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

저도 같은 문제가 있었어요.제 경우 스프링 부트 맵 플러그인이 빠져 있었습니다.

<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의 프로세서가 해결했습니다.제 경우, 이것은 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의 클래스에 정의되어 있어도 "unused"로 표시되어 있었습니다.

Idea의 maven 패널에서는 maven 라이프 사이클에서 cleaning과 컴파일이 가능했습니다.

언급URL : https://stackoverflow.com/questions/33483697/re-run-spring-boot-configuration-annotation-processor-to-update-generated-metada