web-dev-qa-db-ja.com

Mapstruct注釈プロセッサがGradleプロジェクトのIntellijで動作しないようです

Intellij 2017 Ultimateを使用して、MapStructを使用するSpring Bootアプリケーションをビルド/実行しようとしています。これはGradleプロジェクトです。私の問題は、IntelliJがMapStruct注釈プロセッサを実行していないように見えることです。 IntelliJをGradleビルドプロセスに委任するように構成できることを理解しています( これを参照 )。APTを使用して必要なものを生成するようにIntelliJを構成するだけです。クラス自体。

プロジェクトでAPTを有効にしましたが、クラスがまだ生成されていません。

build.gradle(該当するスニペット):

ext {
    mapstructVersion = '1.2.0.Final'
}

plugins {
    id 'net.ltgt.apt' version '0.15'
}

dependencies {
    // MapStruct support
    implementation group: 'org.mapstruct', name: 'mapstruct-jdk8', version: mapstructVersion
    annotationProcessor group: 'org.mapstruct', name: 'mapstruct-processor', version: mapstructVersion
 }

IntelliJ構成:

enter image description here

それでも、私が./gradle cleanの後にBuild-> Rebuild Projectを実行すると、out/production/classes/generatedフォルダーが空になります。

このプロジェクトでAPT=を有効にするために必要な追加事項はありますか?IntelliJはクラスパス内のmapstruct注釈プロセッサを自動的に検出する必要がありますか?

6
Eric B.

最後にそれはうまく働いています???? Intellji 2018.1 CE。 aptプラグインは必要ありません。

ここにgradleファイルが更新されています

plugins {
    id 'Java'
}

repositories {
       mavenCentral()
       mavenLocal()
}
sourceCompatibility = JavaVersion.VERSION_1_8


dependencies {
      compile group: 'org.mapstruct', name: 'mapstruct-jdk8', version: '1.2.0.Final'
      compileOnly 'org.mapstruct:mapstruct-processor:1.2.0.Final'
      annotationProcessor 'org.mapstruct:mapstruct-processor:1.2.0.Final'
      compileOnly ("org.projectlombok:lombok")
      testCompile 'junit:junit:4.12'
}

次のものが正しく設定されていることを確認してください

  1. 注釈プロセッサを有効にする(設定->ビルド実行実行->コンパイラ->注釈プロセッサ)

  2. MapStructプラグイン

  3. Lombokプラグイン

8
Jega

私のbuild.gradle:

plugins {
    id 'Java'
    id 'idea'
}

ext {
    mapstructVersion = '1.2.0.Final'
}

dependencies {

    // bean mapping
    compile group: 'org.mapstruct', name: 'mapstruct-jdk8', version: mapstructVersion
    compileOnly group: 'org.mapstruct', name: 'mapstruct-processor', version: mapstructVersion
    annotationProcessor group: 'org.mapstruct', name: 'mapstruct-processor', version: mapstructVersion

}

更新して、プロジェクトを再構築してください。

トラブルシューティング

うまくいかない場合...

  1. 手動で 注釈プロセッサ を有効にします。
    annotationProcessor構成に関連する IDEAのバグ のようです。

    IntelliJ IDEA -> Configure Annotations Processors (click to enlarge the screenshot)

  2. 「out/production/classes/generated」フォルダーでビルド出力を確認してください。空の場合は、プロジェクトを再構築してください。ビルド出力フォルダーの内容を手動で削除し、再構築の前にマッパークラスを変更して、変更が適用されていることを確認します。

    $ rm -rf out build .gradle
    
  3. IntelliJ IDEAの外部でプロジェクトをビルドして実行し、Gradleビルドファイルを確認します。

  4. ビルドアクションをGradleに委任してみてください。とにかく注釈プロセッサが私のために働くので、私はこのオプションを使用しません。

    IntelliJ IDEA -> Delegate build/run actions to Gradle

  5. IntelliJ IDEA 2018.3以降に更新します。

6
naXa

代わりにnet.ltgt.apt-ideaプラグインを使用する必要があります。これにより、IntelliJ IDEAが自動的に構成されます。

plugins {
    id 'net.ltgt.apt-idea' version '0.17'
}    
dependencies {
    compile('org.mapstruct:mapstruct-jdk8:1.2.0.Final')
    apt('org.mapstruct:mapstruct-processor:1.2.0.Final')
}

aptは最新のGradleバージョンでは非推奨であり、代わりにannotationProcessorを使用する必要があることに注意してください。ただし、IntelliJはまだサポートしていません。 IDEA-187868 を参照してください。

1
Anton Orlov

Tomcat EEサーバーを使用してSpringアプリケーションを実行しています。私にとっては、次のことを行うとうまくいきました:

Edit Configuration> VM Optionsに次の行を追加します

-Xms1024m -Xmx1024m -XX:MaxPermSize=256m
0
feltspar