私はgradleを使用してIntellijに私のプロパティを認識させようとしています。私は手順に従いました ここ 。つまり、これは@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を構成する方法もわかりません。
誰かがこれをgradleで動作させていますか?それともバグですか。
Edit私は repo を作成して、これを実証するために2つのプロジェクトを作成しました。 1つはGradle用、もう1つはMaven用です。 start.spring.ioからプロジェクトを作成し、基本的にプロパティ構成を追加しました。また、オプションの/ compileOnlyの代わりに、両方のケースでストレートコンパイル依存関係を使用しました。
私は以前これを確認していませんでしたが、コードアシストはMavenで機能しますが、Gradleでは機能しません。どちらも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
}
この答えは、(現時点では)他の2つの答えを少しひねったものです。私の場合、これは問題を「修正」したものです:(2019.03.01-Ultimate)
デフォルトの注釈処理をオンにします([ファイル]> [設定]> [ビルド、実行、配置]> [注釈プロセッサ]> [注釈処理を有効にする])。
Build.gradleの@thymeの回答にコードを追加します
into "out/production/classes"
の代わりにEXCEPTinto "build/generated/sources/annotationProcessor"
これで、gradle clean/buildを実行できるようになり、Intellijが「追加のメタデータ」定義を見つけられるようになります。
Build.gradleコードで 'additional-spring-configuration-metadata.json'が明示的に言及されていない場合でも、annotationProcessorフォルダーに「spring-configuration-metatdata.json」と表示されるのは、まさに「追加メタデータ」であることに注意してください。 "Intellijが見つけた場所。
編集:また、Intellijが新しいエントリを(新しく再生成されたファイルで)表示する前に、新しい「追加のメタデータ」アイテムを追加した後、クリーンアップ/再構築する必要があります。