Lombokコンパイラプラグイン
Kotlin Lombokコンパイラプラグインを使用すると、同じJava/Kotlin混合モジュール内のKotlinコードからJavaのLombok宣言を生成および使用できるようになります。 別のモジュールからそのような宣言を呼び出す場合は、そのモジュールのコンパイルにこのプラグインを使用する必要はありません。
LombokコンパイラプラグインはLombokを置き換えるものではありませんが、Java/Kotlin混合モジュールでLombokが動作するのを助けます。 そのため、このプラグインを使用する場合でも、通常通りLombokを設定する必要があります。 Lombokコンパイラプラグインの設定方法の詳細については、こちらを参照してください。
サポートされているアノテーション
このプラグインは以下のアノテーションをサポートしています。
@Getter,@Setter@Builder,@SuperBuilder@NoArgsConstructor,@RequiredArgsConstructor, および@AllArgsConstructor@Data@With@Value
このプラグインの開発は継続中です。詳細な現在の状態については、LombokコンパイラプラグインのREADMEをご覧ください。
現在、@Tolerateアノテーションをサポートする予定はありません。ただし、YouTrackの@Tolerateの課題に投票していただければ、検討する可能性があります。
Kotlinコード内でLombokアノテーションを使用した場合、Kotlinコンパイラはそれらを無視します。
Gradle
build.gradle(.kts)ファイルにkotlin-plugin-lombok Gradleプラグインを適用します。
plugins {
kotlin("plugin.lombok") version "2.3.0"
id("io.freefair.lombok") version "9.1.0"
}plugins {
id 'org.jetbrains.kotlin.plugin.lombok' version '2.3.0'
id 'io.freefair.lombok' version '9.1.0'
}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によるアノテーション処理を無効にします。 kaptと共にLombokを実行するには、javacのアノテーションプロセッサが動作し続けるようにkaptを設定します。
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コンパイラのバイナリ配布物に含まれています。kotlincのXpluginオプションを使用して、JARファイルへのパスを指定することでプラグインをアタッチできます。
-Xplugin=$KOTLIN_HOME/lib/lombok-compiler-plugin.jarlombok.configファイルを使用したい場合は、<PATH_TO_CONFIG_FILE>をlombok.configへのパスに置き換えてください。
# プラグインオプションの形式は "-P plugin:<plugin id>:<key>=<value>" です。
# オプションは繰り返すことができます。
-P plugin:org.jetbrains.kotlin.lombok:config=<PATH_TO_CONFIG_FILE>