Skip to content
Alpha

Lombok 編譯器外掛程式

Kotlin Lombok 編譯器外掛程式允許在同一個 Java/Kotlin 混合模組中,讓 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 問題投票,我們可以考慮。

如果您在 Kotlin 程式碼中使用 Lombok 註解,Kotlin 編譯器會忽略它們。

Gradle

build.gradle(.kts) 檔案中套用 kotlin-plugin-lombok Gradle 外掛程式:

kotlin
plugins {
    kotlin("plugin.lombok") version "2.3.0"
    id("io.freefair.lombok") version "9.1.0"
}
groovy
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) 檔案中:

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

請參閱此包含 Lombok 編譯器外掛程式與 lombok.config 使用範例的測試專案

Maven

若要使用 Lombok 編譯器外掛程式,請將 lombok 外掛程式新增至 compilerPlugins 區段,並將 kotlin-maven-lombok 相依性新增至 dependencies 區段。 如果您使用 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 編譯器的二進位發行版本中取得。您可以透過 kotlincXplugin 選項提供其 JAR 檔案路徑來附加此外掛程式:

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

如果您想使用 lombok.config 檔案,請將 <PATH_TO_CONFIG_FILE> 取代為您的 lombok.config 路徑:

bash
# 外掛程式選項格式為:"-P plugin:<plugin id>:<key>=<value>"。
# 選項可以重複。

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