12.2.4 Lombok 编译器插件
原文链接: https://kotlinlang.org/docs/lombok.html
12.2.4 Lombok 编译器插件
Alpha
Kotlin Lombok 编译器插件允许 Kotlin 代码在同一个 Java/Kotlin 混合模块中生成并使用 Java 的 Lombok 声明。如果你从另一个模块调用这类声明,那么编译那个模块时不需要使用该插件。
Lombok 编译器插件不能替代 Lombok,但它能让 Lombok 在 Java/Kotlin 混合模块中工作。因此,使用该插件时你仍然需要像往常一样配置 Lombok。进一步了解如何配置 Lombok 编译器插件。
支持的注解
该插件支持以下注解:
@Getter、@Setter@Builder、@SuperBuilder@NoArgsConstructor、@RequiredArgsConstructor 和 @AllArgsConstructor@Data@With@Value
我们仍在继续开发该插件。要了解当前的详细状态,请访问 Lombok 编译器插件的 README。
目前我们没有支持 @Tolerate 注解的计划。不过,如果你在 YouTrack 上为 @Tolerate issue 投票,我们会考虑它。
注意: 如果你在 Kotlin 代码中使用 Lombok 注解,Kotlin 编译器会忽略它们。
Gradle
在 build.gradle(.kts) 文件中应用 kotlin-plugin-lombok Gradle 插件:
Kotlin
1
2
3
4
| plugins {
kotlin("plugin.lombok") version "2.4.20"
id("io.freefair.lombok") version "9.5.0"
}
|
Groovy
1
2
3
4
| plugins {
id 'org.jetbrains.kotlin.plugin.lombok' version '2.4.20'
id 'io.freefair.lombok' version '9.5.0'
}
|
请参阅这个使用 Lombok 编译器插件的示例测试项目。
使用 Lombok 配置文件
如果你使用 Lombok 配置文件lombok.config,则需要设置该文件的路径,以便插件能够找到它。该路径必须相对于模块目录。例如,在 build.gradle(.kts) 文件中添加以下代码:
Kotlin
1
2
3
| kotlinLombok {
lombokConfigurationFile(file("lombok.config"))
}
|
Groovy
1
2
3
| kotlinLombok {
lombokConfigurationFile file("lombok.config")
}
|
请参阅这个使用 Lombok 编译器插件和 lombok.config 的示例测试项目。
Maven
要使用 Lombok 编译器插件,请把 lombok 插件添加到 compilerPlugins 部分,并把 kotlin-maven-lombok 依赖添加到 dependencies 部分。如果你使用 Lombok 配置文件lombok.config,请在 pluginOptions 中向插件提供它的路径。把以下几行添加到 pom.xml 文件中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| <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) 文件中添加该选项:
1
2
3
| kapt {
keepJavacAnnotationProcessors = true
}
|
在 Maven 中,请使用以下设置让 Lombok 与 Java 编译器一起启动:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| <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 编译器的二进制发行版中。你可以通过 Xplugin kotlinc 选项提供其 JAR 文件的路径来挂载该插件:
1
| -Xplugin=$KOTLIN_HOME/lib/lombok-compiler-plugin.jar
|
如果你想使用 lombok.config 文件,请把 <PATH_TO_CONFIG_FILE> 替换为你的 lombok.config 的路径:
1
2
3
4
| # The plugin option format is: "-P plugin:<plugin id>:<key>=<value>".
# Options can be repeated.
-P plugin:org.jetbrains.kotlin.lombok:config=<PATH_TO_CONFIG_FILE>
|