Skip to content

Lombokコンパイラプラグイン

DANGER

Lombokコンパイラプラグインは実験的です。

これはいつでも廃止または変更される可能性があります。評価目的でのみ使用してください。

これに関するフィードバックをYouTrackでお寄せいただけると幸いです。

Kotlin Lombokコンパイラプラグインを使用すると、同じJava/Kotlin混在モジュール内でKotlinコードによるJavaのLombok宣言の生成と使用が可能になります。 別のモジュールからそのような宣言を呼び出す場合、そのモジュールのコンパイルにこのプラグインを使用する必要はありません。

LombokコンパイラプラグインはLombokを置き換えることはできませんが、LombokがJava/Kotlin混在モジュールで動作するのを助けます。 したがって、このプラグインを使用する場合でも、通常通りLombokを設定する必要があります。 Lombokコンパイラプラグインの設定方法について詳しくはこちらをご覧ください。

サポートされているアノテーション

このプラグインは次のアノテーションをサポートしています。

  • @Getter, @Setter
  • @Builder, @SuperBuilder
  • @NoArgsConstructor, @RequiredArgsConstructor, and @AllArgsConstructor
  • @Data
  • @With
  • @Value

私たちはこのプラグインの開発を継続しています。詳細な現在の状態については、LombokコンパイラプラグインのREADMEをご覧ください。

現在、@Tolerateアノテーションをサポートする予定はありません。しかし、YouTrackで@Tolerateに関する問題に投票していただければ、検討することは可能です。

NOTE

Kotlinコンパイラは、KotlinコードでLombokアノテーションを使用しても無視します。

Gradle

build.gradle(.kts)ファイルでkotlin-plugin-lombok Gradleプラグインを適用します。

kotlin
plugins {
    kotlin("plugin.lombok") version "2.1.21"
    id("io.freefair.lombok") version "8.13"
}
groovy
plugins {
    id 'org.jetbrains.kotlin.plugin.lombok' version '2.1.21'
    id 'io.freefair.lombok' version '8.13'
}

Lombokコンパイラプラグインの使用例を含むこのテストプロジェクトをご覧ください。

Lombok設定ファイルの使用

Lombok設定ファイルであるlombok.configを使用する場合、プラグインがそれを見つけられるようにファイルのパスを設定する必要があります。 パスはモジュールのディレクトリに対する相対パスでなければなりません。 例えば、build.gradle(.kts)ファイルに以下のコードを追加します。

kotlin
kotlinLombok {
    lombokConfigurationFile(file("lombok.config"))
}
groovy
kotlinLombok {
    lombokConfigurationFile file("lombok.config")
}

Lombokコンパイラプラグインとlombok.configの使用例を含むこのテストプロジェクトをご覧ください。

Maven

Lombokコンパイラプラグインを使用するには、compilerPluginsセクションにプラグインlombokを、dependenciesセクションに依存関係kotlin-maven-lombokを追加します。 Lombok設定ファイルであるlombok.configを使用する場合、pluginOptionsでプラグインにそのパスを提供します。以下の行をpom.xmlファイルに追加します。

xml
<plugin>
    <groupId>org.jetbrains.kotlin</groupId>
    <artifactId>kotlin-maven-plugin</artifactId>
    <version>${kotlin.version}</version>
    <configuration>
        <compilerPlugins>
            <plugin>lombok</plugin>
        </compilerPlugins>
        <pluginOptions>
            <option>lombok:config=${project.basedir}/lombok.config</option>
        </pluginOptions>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-maven-lombok</artifactId>
            <version>${kotlin.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</plugin>

Lombokコンパイラプラグインとlombok.configの使用例を示すこのテストプロジェクトをご覧ください。

kaptとの使用

デフォルトでは、kaptコンパイラプラグインは全てのアノテーションプロセッサを実行し、javacによるアノテーション処理を無効にします。 Lombokをkaptと共に実行するには、kaptがjavacのアノテーションプロセッサを動作させ続けるように設定します。

Gradleを使用している場合は、build.gradle(.kts)ファイルに以下のオプションを追加します。

groovy
kapt {
    keepJavacAnnotationProcessors = true
}

Mavenでは、JavaコンパイラでLombokを起動するために以下の設定を使用します。

xml
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.5.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <annotationProcessorPaths>
            <annotationProcessorPath>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </annotationProcessorPath>
        </annotationProcessorPaths>
    </configuration>
</plugin>

アノテーションプロセッサがLombokによって生成されたコードに依存しない場合、Lombokコンパイラプラグインはkaptと正しく連携して動作します。

kaptとLombokコンパイラプラグインの使用例を示すテストプロジェクトをご覧ください。

コマンドラインコンパイラ

LombokコンパイラプラグインのJARは、Kotlinコンパイラのバイナリディストリビューションで利用できます。 そのJARファイルへのパスをXplugin kotlincオプションを使用して提供することで、プラグインをアタッチできます。

bash
-Xplugin=$KOTLIN_HOME/lib/lombok-compiler-plugin.jar

もしlombok.configファイルを使用したい場合は、<PATH_TO_CONFIG_FILE>をあなたのlombok.configへのパスに置き換えてください。

bash
# プラグインオプションの形式は「-P plugin:<プラグインID>:<キー>=<値>」です。オプションは複数指定できます。

-P plugin:org.jetbrains.kotlin.lombok:config=<PATH_TO_CONFIG_FILE>