bugfix> gradle > 投稿

gradle 4.7プロジェクトで作業しているときに次のメッセージを受け取りました

The following annotation processors were detected on the compile classpath: 'lombok.launch.AnnotationProcessorHider$AnnotationProcessor' and 'lombok.launch.AnnotationProcessorHider$ClaimingProcessor'. Detecting annotation processors on the compile classpath is
Deprecated and Gradle 5.0 will ignore them. Please add them to the annotation processor path instead. If you did not intend to use annotation processors, you can use the '-proc:none' compiler argument to ignore them.

走るとき

gradlew build --warning-mode=all

次のGradle構成を持つプロジェクト

compileOnly('org.projectlombok:lombok')
testCompileOnly('org.projectlombok:lombok')

警告が示唆するように、これらを annotationProcessor に配置することをお勧めします(および testAnnotationProcessor )gradle 5.0との互換性を保つための構成

annotationProcessor('org.projectlombok:lombok')
testAnnotationProcessor('org.projectlombok:lombok')

ただし、簡単なテストでは:

@Slf4j
public class LombokTests {
    @Test
    public void lombokCompiles() {
        log.info("foobar");
    }
}

その構成は失敗します。

> Task :compileTestJava FAILED
D:\Users\bobjones\repos\my-new-app\src\test\java\com\example\app\LombokTests.java:10: error: cannot find symbol
@Slf4j
 ^
  symbol: class Slf4j
1 error

何か不足していますか?

回答 1 件
  • compileOnly を追加します / testCompileOnly  構成

    annotationProcessor('org.projectlombok:lombok')
    compileOnly('org.projectlombok:lombok')
    testAnnotationProcessor('org.projectlombok:lombok')
    testCompileOnly('org.projectlombok:lombok')
    
    

    ドキュメントによると、annotationProcessorの設定にはまだ compileOnly が必要です  (および testCompileOnly  機能するテストクラス)構成。インクリメンタルアノテーション処理のサポートに関しては、Lombokの実装者はマスターにサポートをマージしたばかりですが、2018年5月25日の時点で本稼働バージョンは含まれていません。

    彼らの最後のバージョン16.2.20は2018年1月9日までコミットにまで適用され、Gradleの変更は2018年5月15日にマスターに取り込まれました。この機能に関するメモを含めないでください。

あなたの答え