web-dev-qa-db-ja.com

@ConfigurationProperties Spring Boot Configuration Annotation Processorがクラスパスに見つかりません

Spring Bootでカスタムプロパティの補完を試みます。
IntelliJ IDEA 2016.3で簡単なプロジェクトを作成しようとしました。
1。 Spring Boot Initializerで新しいGradleプロジェクトを作成しました(何もチェックしていません)。
2。新しいクラスPropertiesを作成しました。
3。 @ConfigurationPropertiesで注釈を付けたとき、次の通知が表示されました: notificationドキュメント は、プロジェクトに以下を追加する必要があると述べました。

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

compileJava.dependsOn(processResources)

その後、プロジェクトを再構築し、設定で注釈プロセッサを有効にしようとしましたが、通知は消えていません。完了も機能しません(文字列myを作成しました)。

42
Feeco

propdeps-plugin を追加するのを忘れました。ただし、2016.3のプラグインでも機能しなかったことを思い出します。@ CrazyCoderが述べたように、Gradleをダウングレードするか、新しい2017.1バージョンをダウンロードしてみてください( details )。
また、この問題を解決するときにRe-run Spring Boot Configuration Annotation Processor to update generated metadataを受け取る場合があります。このためには、Refresh all Gradle projects(Gradleサイドメニュー)をクリックします。

10
Feeco

同じ問題がありました。私はアイデア2017.2とgradle 4.1を使用していますが、いくつかのブログはあなたが追加すべきだと言っています:

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

しかし、私はこれをこれに変更しました:

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

そして、警告は消えました。

20
Icex

Spring Boot docs によると、Gradle 4.6以降の正しい設定は

dependencies {
    annotationProcessor group: 'org.springframework.boot', name: 'spring-boot-configuration-processor'
    // ...
}

ただし、IntelliJ IDEAはannotationProcessorスコープを(まだ)サポートしていません。投票 IDEA-187868 この問題に注意を引きたい場合。

11
naXa

IntelliJのバージョン2018.3では、次の方法でこの問題を解決しました( このドキュメント に従って):

Gradle 4.5以前では、次の例に示すように、compileOnly構成で依存関係を宣言する必要があります。

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

Gradle 4.6以降では、次の例に示すように、annotationProcessor構成で依存関係を宣言する必要があります。

dependencies {
  annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
}
4
AR1

IDEAには2つの理由があります。

  1. IDEAで設定が選択されている(有効になっている)ことを再確認します。[設定]-> [注釈プロセッサ]-> [注釈処理を有効にする]。
  2. アイデアを更新したら、プラグインを確認して更新します。プラグインは新しいIDEAバージョンと互換性がなくなることがあるので、クリックして更新してください。
2

IntelliJバージョン2018.1.2でも同じ問題が発生しました。また、機能させるためにspring-boot-configuration-processorの実際のバージョンを定義する必要がありました。

compile('org.springframework.boot:spring-boot-configuration-processor:2.0.1.RELEASE') 
1
vargapeti

次は私のために働く:

buildscript {
    repositories {
        jcenter()
        maven { url 'https://repo.jenkins-ci.org/public/' }
        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-Eclipse'
apply plugin: 'propdeps-idea'

...

dependencyManagement {
    imports {
        mavenBom 'org.springframework.boot:spring-boot-starter-parent:2.0.0.RELEASE'
    }
}

...

dependencies {
    compile "org.springframework.boot:spring-boot-starter"
    compile "org.springframework.boot:spring-boot-starter-actuator"
    annotationProcessor "org.springframework.boot:spring-boot-configuration-processor" // for @ConfigurationProperties, make sure compileJava.dependsOn(processResources)
    ...
}

compileJava.dependsOn(processResources)
0
Dirk Hoffmann