web-dev-qa-db-ja.com

Lombok注釈付きクラスでGradleビルドが失敗する

Build.gradleにLombokの依存関係を追加したJHipsterプロジェクトがあります。

compile group: 'org.projectlombok', name: 'lombok', version: lombok_version

また、IntelliJのLombokプラグインが停止しています。 IntelliJで注釈処理をオンにしましたが、IntelliJ IDEからエラーなしでビルドできますが、コマンドラインからビルドしようとすると、ビルドエラーが発生します。 Gradleは注釈を処理していないようで、getter/setterとログ宣言を見つけることができません。このプロジェクトは、何のエラーもなく実行されます。

コマンドライン:

./gradlew build

エラー:

/Users/.../source/v4.0/src/main/Java/com/.../service/MyService.Java:145: error: cannot find symbol
        log.info("Security Context: " + SecurityUtils.getCurrentUserLogin());
        ^
  symbol:   variable log
  location: class MyService

エラー:

/Users/.../source/v4.0/src/main/Java/com/.../service/MyService.Java:105: error: cannot find symbol
        myClass.setDescription(description);
                        ^
  symbol:   method setDescription(String)
  location: variable myClass of type MyClass

サービスクラス:

import lombok.extern.slf4j.Slf4j; 
import org.springframework.stereotype.Service;

@Service
@Slf4j
public class MyService {      
    public void someMethod(){
        log.debug("Security Context: " + SecurityUtils.getCurrentUserLogin());
        MyClass myCLass = new MyClass();
        myClass.setDescription(description);
    }
}

エンティティクラス:

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.Table;

@Entity
@Table(name="t_juror_file_update")
@Getter
@Setter
@NoArgsConstructor
public class MyClass {

    private String description;

}

私は何時間もこれを理解しようとしましたが、完全に行き詰まりました。任意の助けいただければ幸いです。

15
Jose Gulisano

lombokを注釈プロセッサとして指定する必要があります。これを行うには、Jhipsterプロジェクトのbuild.gradleに以下を追加する必要があります。

apply plugin: 'net.ltgt.apt'

dependencies {    
    provided "org.projectlombok:lombok:$lombokVersion"
    apt "org.projectlombok:lombok:$lombokVersion"

    /** ... */
}

Jhipsterは、注釈処理にnet.ltgt.gradle:gradle-apt-pluginを使用します。

IntelliJ設定の場合、Enable annotation Processingを確認する必要があります。

詳細: プロジェクトロンボク-Android手順

17
TheKojuEffect

同じ問題があり、build.gradleに追加したときに私のために働きました:

dependencies{

compileOnly 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'

}

リソース: https://projectlombok.org/setup/gradle

10
user3170676

./gradlewクリーンビルドが正常に機能していたのと同じ問題に直面していましたが、gradleクリーンビルドを実行しようとしたときに、gdleビルド時に見つからなかったlombokによって生成されると考えられるゲッターメソッドとセッターメソッドを使用しています。それはコンパイルのためにビルド失敗の例外をスローするので

以前、私はgrapper wrapperバージョン3.4.1とgradleバージョン5.6.2を持っていました。したがって、私はgradleのバージョンを4.10.0にダウングレードすることでこの問題を修正できますが、gradle wrapperのバージョンは同じままなので、3.4.1です。

これはgradleバージョンです

Gradle 4.10

ビルド時間:2018-08-27 18:35:06 UTCリビジョン:ee3751ed9f2034effc1f0072c2b2ee74b5dce67d

Kotlin DSL:1.0-rc-3 Kotlin:1.2.60 Groovy:2.4.15 Ant:2018年3月23日にコンパイルされたApache Ant(TM)バージョン1.9.11 JVM:1.8.0_191(Oracle Corporation 25.191-b12)OS:Mac OS X 10.14.6 x86_64

これはgradleラッパーバージョンです

Gradle 3.4.1

ビルド時間:2017-03-03 19:45:41 UTCリビジョン:9eb76efdd3d034dc506c719dac2955efb5ff9a93

Groovy:2.4.7 Ant:2015年6月29日にコンパイルされたApache Ant(TM)バージョン1.9.6 JVM:1.8.0_191(Oracle Corporation 25.191-b12)OS:Mac OS X 10.14.6 x86_64

これは私のために働く

0
Rahul