codememo

Intellij가 application.yml에서 속성을 인식하도록 하는 방법

tipmemo 2023. 10. 30. 21:01
반응형

Intellij가 application.yml에서 속성을 인식하도록 하는 방법

저는 인텔라이가 그라들을 이용해 제 재산을 알아보게 하려고 합니다.저는 여기에 있는 절차를 따라 왔습니다.그러니까 이건 내가 지금@ConfigurationProperties일부 속성이 있는 주석이 달린 클래스입니다.

스프링 의존성을 추가하여 처리했습니다.

dependencies {
    optional "org.springframework.boot:spring-boot-configuration-processor"
}

compileJava.dependsOn(processResources)

플러그인을 추가했습니다(플러그인을 사용하지 않고 컴파일 종속성으로 만듦, 변경 사항 없음).

buildscript {
    repositories {
        maven { url 'http://repo.spring.io/plugins-release' }
    }
    dependencies { classpath 'io.spring.gradle:propdeps-plugin:0.0.9.RELEASE' }
}

apply plugin: 'propdeps'
apply plugin: 'propdeps-maven'
apply plugin: 'propdeps-idea'

빌드를 실행하면,build/classes/java/main/META-INF/spring-configuration-metadata.json파일은 내 속성을 기반으로 생성됩니다.둘 중 하나의 자산을 사용하려고 할 때application.yml아니면application.properties, Intellij는 해결할 수 없다고 말합니다.

의사들은 그것을 전화해야 한다고 말합니다.additional-spring-configuration-metadata.json이를 처리하기 위해 이 이름을 사용할 것으로 예상할 수도 있지만 빌드 이름을 그런 방식으로 만들 수도 없고 Intellij가 그렇지 않을 것으로 예상하도록 구성할 수도 없습니다.

그래들이랑 같이 작업한 사람?아니면 벌레인가요?

편집 나는 이를 증명하기 위해 프로젝트 쌍으로 레포를 만들었습니다.그라들용 하나와 메이븐용 하나.저는 start.spring.io 에서 프로젝트를 만들고 기본적으로 속성 구성을 추가했습니다.또한 두 경우 모두에 옵션 / completeOnly 대신 직선 컴파일 종속성을 사용했습니다.

전에는 확인하지 못했는데, 코드 어시스트는 메이븐에게는 작동하지만 그라들은 작동하지 않습니다.둘 다 생성합니다.spring-configuration-metadata.json에서META-INF각각의 빌드 폴더에 있습니다.나는 누가 그것을 받지 않는지 정확하게 확신하지 못합니다.

관련 버전이 일치하지 않음

Intellij: 2017.3.4
Springboot: 1.5.9
Gradle: 4.4.1
Java: 8.161

제가 알 수 있는 한, IntelliJ(본 글 작성 당시, 2018.1.2)는 다음을 원합니다.spring-configuration-metadata.json파일을 주 소스 루트에 저장합니다(src/main/resources/META-INF/ or src/main/java/META-INF/소스 트리의 속성을 자동으로 완료하기 위해 해당 디렉터리를 선택할 수 있습니다.Phospodka의 코멘트를 확대하기 위해서는, 당신의 build.gradle에 이와 같은 것을 추가하여 IntelliJ를 만족시킬 수 있습니다.

task copyConfigurationMetadata(type: Copy) {
    from(compileJava) {
        include 'META-INF/spring-configuration-metadata.json'
    }
    into "out/production/classes"
}
compileJava {
    dependsOn processResources
    finalizedBy copyConfigurationMetadata
}

이 답변은 (지금은) 다른 두 답변을 작은 반전과 함께 조합한 것입니다.제 경우에는 이것이 문제를 "수정"한 것입니다. (2019.03.01-Ultimate에서)

  • 기본 주석 처리 설정(파일>설정>빌드, 실행, 배포>주석 처리기> 주석 처리 사용

    • 프로젝트 클래스 경로에서 프로세서 가져오기를 선택합니다.
    • 모듈 출력 디렉토리에 상대적으로 생성된 소스 저장을 선택합니다.
    • 다른 기본값 유지
    • [확인] 을 누릅니다.
  • @thyme의 답변에 있는 코드를 build.gradle에 추가합니다.

    • 대신에 제외합니다.into "out/production/classes"
    • :into "build/generated/sources/annotationProcessor"

이제 gradle clean/build를 실행할 수 있고 Intellij는 "추가 메타데이터" 정의를 찾을 수 있습니다.

build.gradle 코드가 'additional-spring-configuration-metadata'를 명시적으로 언급하지는 않지만 주의하십시오.json'은 Intellij가 찾는 "spring-configuration-metatdata.json"으로 주석 처리기 폴더에 끝나는 "추가 메타데이터"입니다.

편집: 또한 Intellij가 새로 재생성한 파일에서 새 항목을 보기 전에 "추가 메타데이터" 항목을 추가한 후 치료/재구축해야 합니다.

언급URL : https://stackoverflow.com/questions/48675377/how-to-get-intellij-to-recognize-properties-in-application-yml

반응형