設定系統
Lombok,量身打造:在單一位置為您的整個專案甚至工作區設定 lombok 功能。
`import` 指令於 lombok 1.18.12 版本中新增。
`lombok.addNullAnnotations` 設定鍵於 lombok 1.18.12 版本中新增。
總覽
您可以在任何目錄中建立 `lombok.config` 檔案,並在其中放入設定指令。這些指令會套用至此目錄和所有子目錄中的所有原始碼檔案。
設定系統對於 Lombok 的可設定方面特別有用,這些方面在整個專案中往往是相同的,例如您的日誌變數名稱。設定系統也可以用來告知 Lombok 將您不喜歡的 Lombok 功能的任何使用標記為警告甚至錯誤。
通常,Lombok 使用者會在工作區或專案根目錄中放置一個包含其偏好設定的 `lombok.config` 檔案,並使用特殊的 `config.stopBubbling = true` 鍵來告知 Lombok 這是您的根目錄。然後,您可以在任何子目錄(通常代表專案或原始碼套件)中建立具有不同設定的 `lombok.config` 檔案。
執行以下命令可以產生您的 Lombok 版本支援的所有設定鍵的最新列表
java -jar lombok.jar config -g --verbose
*config* 工具也可以用來顯示用於任何給定目錄或原始碼檔案的完整 Lombok 設定,只需將它們作為引數提供即可。
可用設定選項範例(有關其相關設定鍵,請參閱 Lombok 功能的功能頁面,以及 `java -jar lombok.jar config -g` 以取得完整列表)
-
lombok.accessors.chain
- 如果設定為 `true`,產生的 setter 預設會「鏈式」(chain)(它們將返回 `this` 而不是 `void` 返回類型)。
-
lombok.accessors.fluent
- 如果設定為 `true`,產生的 setter 和 getter 將僅命名為與欄位名稱相同,而沒有 `get` 或 `set` 前綴。
-
lombok.anyConstructor.addConstructorProperties
- 如果為 `true`,當產生建構子時,Lombok 將產生 `@java.beans.ConstructorProperties` 註解。請注意,如果您使用 jigsaw,則需要依賴模組 'java.desktop'。
-
lombok.log.fieldName
- 產生的日誌欄位名稱 (預設值:`log`)。
-
lombok.*(featureName)*.flagUsage
- 允許您強制停止或勸阻使用 Lombok 功能。此鍵的合法值為 `warning` 或 `error`。*(featureName)* 的一些值範例為:「experimental」(標記任何實驗性功能的使用)、「builder」、「sneakyThrows」或「extensionMethod」。
設定檔是階層式的:任何設定設定都適用於該目錄中的所有原始碼檔案,以及子目錄中的所有原始碼檔案,但更接近原始碼檔案的設定設定優先。例如,如果您在 `/Users/me/projects/lombok.config` 中有以下內容
lombok.log.fieldName = foobar
lombok.log.fieldName = xyzzy
若要將父設定檔設定的設定鍵還原為預設值,可以使用 `clear` 選項。例如,如果父設定檔已將所有 `val` 的使用設定為發出警告,您可以透過在子目錄中包含一個包含以下內容的 `lombok.config` 檔案來關閉子目錄的警告
clear lombok.val.flagUsage
某些設定鍵接受列表。對於列表,請使用 `+=` 新增項目。您可以使用 `-=` 從列表中移除單個項目(對於撤銷父設定檔的設定很有用)。例如
lombok.accessors.prefix += m_
註解可以包含在 `lombok.config` 檔案中;任何以 `#` 開頭的行都被視為註解。
全域設定鍵
這些設定鍵會影響許多或所有 Lombok 功能,或影響設定系統本身。
若要停止 Lombok 從父目錄中查找更多設定檔,可以使用特殊的鍵
config.stopBubbling = true
每當有意義時,Lombok 都可以新增空值註解(通常稱為 `@NonNull` 和 `@Nullable`);想想產生的 `toString` 和 `withX` 方法(這些方法永遠不會返回 null),或者產生的 `equals` 方法的參數,該參數允許為 null,如果您已將 IDE 設定為嚴格的 null 檢查以及「預設情況下參數不可為 null」,則需要此類註解。有許多此類函式庫;您必須告訴 Lombok 要使用哪一個。預設情況下,不會新增此類註解。使用以下方式啟用此功能
lombok.addNullAnnotations = <flavor>
javax
(=JSR305;不建議使用)、jakarta
、eclipse
、jetbrains
、netbeans
、androidx
、android.support
(在 android 中已棄用)、checkerframework
(建議使用)、findbugs
、spring
、jml
,或透過 CUSTOM:fully.qualified.NonNullAnnotation:fully.qualified.NullableAnnotation
定義您自己的;如果您的空值註解僅為類型使用樣式(它註解類型,例如 Eclipse 和 checkerframework 的產品,而不是註解方法和參數),則格式為 CUSTOM:TYPE_USE:nonnullanno:nullableanno
。此功能於 Lombok v1.18.12 版本中新增.
可以將 Lombok 設定為在所有可能的情況下將 `@lombok.Generated` 註解新增至所有產生的節點;對於 JaCoCo(具有內建支援)或其他樣式檢查器和程式碼覆蓋率工具很有用
lombok.addLombokGeneratedAnnotation = true
如果您想在您的類別檔案上執行 FindBugs,Lombok 可以新增 `@SuppressFBWarnings` 註解,這非常有用。若要啟用此功能,請確保在編譯時 findbugs 在類別路徑中,並新增以下設定鍵
lombok.extern.findbugs.addSuppressFBWarnings = true
預設情況下,Lombok 會將 `@SuppressWarnings("all")` 註解新增至所有產生的節點。如果您想使用像 Checker Framework 這樣的靜態程式碼分析器,則可以關閉此功能,這很有用。
lombok.addSuppressWarnings = false
可以影響任何原始碼檔案的設定鍵
即使這些設定鍵在原始碼檔案中沒有 0 個 Lombok 註解,它們也可以使 Lombok 影響這些原始碼檔案。
lombok.fieldDefaults.defaultPrivate = true
lombok.fieldDefaults.defaultFinal = true
從不同的檔案匯入設定
在設定檔的頂部,可以匯入其他設定檔。匯入的檔案不必命名為 `lombok.config`,並且可以具有任何檔案副檔名(甚至沒有副檔名)。
import ../configuration/model.config
對於共用專案,始終使用相對路徑是有意義的。對於個人而言,也可以使用絕對路徑。
# Linux
import /etc/lombok/model.config
# Windows
import d:/lombok/model.config
只要在任何設定鍵之前指定,設定檔就可以匯入多個設定檔。系統的行為就好像匯入檔案的內容位於 `import` 宣告的位置。
設定系統的工作方式是,重複的條目實際上會被忽略。它是後者獲勝。Lombok 在解析特定值時只會處理一次設定檔。這允許您從不同的設定檔匯入相同的檔案,甚至建立迴圈而不會出現任何問題。
也可以從 `.jar` 和 `.zip` 檔案匯入檔案。
# 使用封存檔根目錄中的 'lombok.config'。
import ../deps/lombok-config.jar
# 使用封存檔中的給定檔案。
import ../deps/lombok-config.zip!base/model.config
匯入檔案時,可以使用環境變數。
# 環境變數是以角括號 (<, >) 括起來的名稱。
# 如果存在,它們將被 System.getenv(name) 取代。
import <JAVA_PROJECTS>/shared.config
# 開頭的波浪符號 (~) 會被 System.getProperty("user.home", "~") 取代。
import ~/my.config
此功能於 Lombok v1.18.12 版本中新增。