Spring Bootでカスタムプロパティの補完を試みます。
IntelliJ IDEA 2016.3で簡単なプロジェクトを作成しようとしました。
1。 Spring Boot Initializerで新しいGradleプロジェクトを作成しました(何もチェックしていません)。
2。新しいクラスProperties
を作成しました。
3。 @ConfigurationProperties
で注釈を付けたとき、次の通知が表示されました: ドキュメント は、プロジェクトに以下を追加する必要があると述べました。
dependencies {
optional "org.springframework.boot:spring-boot-configuration-processor"
}
compileJava.dependsOn(processResources)
その後、プロジェクトを再構築し、設定で注釈プロセッサを有効にしようとしましたが、通知は消えていません。完了も機能しません(文字列my
を作成しました)。
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サイドメニュー)をクリックします。
同じ問題がありました。私はアイデア2017.2とgradle 4.1を使用していますが、いくつかのブログはあなたが追加すべきだと言っています:
dependencies {
optional "org.springframework.boot:spring-boot-configuration-processor"
}
しかし、私はこれをこれに変更しました:
dependencies {
compile "org.springframework.boot:spring-boot-configuration-processor"
}
そして、警告は消えました。
Spring Boot docs によると、Gradle 4.6以降の正しい設定は
dependencies {
annotationProcessor group: 'org.springframework.boot', name: 'spring-boot-configuration-processor'
// ...
}
ただし、IntelliJ IDEAはannotationProcessor
スコープを(まだ)サポートしていません。投票 IDEA-187868 この問題に注意を引きたい場合。
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" }
IDEAには2つの理由があります。
IntelliJバージョン2018.1.2でも同じ問題が発生しました。また、機能させるためにspring-boot-configuration-processorの実際のバージョンを定義する必要がありました。
compile('org.springframework.boot:spring-boot-configuration-processor:2.0.1.RELEASE')
次は私のために働く:
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)