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プラグインを適用します。
plugins {
kotlin("plugin.lombok") version "2.1.21"
id("io.freefair.lombok") version "8.13"
}
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)
ファイルに以下のコードを追加します。
kotlinLombok {
lombokConfigurationFile(file("lombok.config"))
}
kotlinLombok {
lombokConfigurationFile file("lombok.config")
}
Lombokコンパイラプラグインとlombok.config
の使用例を含むこのテストプロジェクトをご覧ください。
Maven
Lombokコンパイラプラグインを使用するには、compilerPlugins
セクションにプラグインlombok
を、dependencies
セクションに依存関係kotlin-maven-lombok
を追加します。 Lombok設定ファイルであるlombok.config
を使用する場合、pluginOptions
でプラグインにそのパスを提供します。以下の行をpom.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)
ファイルに以下のオプションを追加します。
kapt {
keepJavacAnnotationProcessors = true
}
Mavenでは、JavaコンパイラでLombokを起動するために以下の設定を使用します。
<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オプションを使用して提供することで、プラグインをアタッチできます。
-Xplugin=$KOTLIN_HOME/lib/lombok-compiler-plugin.jar
もしlombok.config
ファイルを使用したい場合は、<PATH_TO_CONFIG_FILE>
をあなたのlombok.config
へのパスに置き換えてください。
# プラグインオプションの形式は「-P plugin:<プラグインID>:<キー>=<値>」です。オプションは複数指定できます。
-P plugin:org.jetbrains.kotlin.lombok:config=<PATH_TO_CONFIG_FILE>