Delombok
概觀
一般來說,lombok 會直接外掛到您的 IDE 和編譯器,以增加對所有 lombok 功能的支援。
然而,lombok 並未涵蓋所有工具。例如,lombok 無法外掛到 javadoc,也無法外掛到 Google Widget Toolkit,這兩者都在 java 原始碼上執行。Delombok 仍然允許您將 lombok 與這些工具一起使用,方法是將您的 java 程式碼預處理成已套用所有 lombok 轉換的 java 程式碼。
Delombok 當然也可以幫助您理解原始碼中發生的事情,讓您可以確切地查看 lombok 在「底層」所做的事情。
Delombok 的標準運作模式是將整個目錄遞迴地複製到另一個目錄,跳過 class 檔案,並將 lombok 轉換應用於它遇到的任何 java 原始碼檔案。
Delombok 的輸出格式可以使用命令列選項進行配置(使用 --format-help
查看完整列表)。如果可能,會自動從輸入中掃描一些此類選項(例如縮排)。如果 delombok 的格式不符合您偏好的程式碼風格,請查看一下!
在命令列上執行 delombok
Delombok 包含在 lombok.jar
中。要使用它,您只需在命令列上執行
java -jar lombok.jar delombok src -d src-delomboked
這會將
src
目錄的內容複製到 src-delomboked
目錄,如果該目錄尚不存在,則會建立該目錄,當然是 delomboked 過的。命令列上的 Delombok 還有一些其他選項;使用 --help
參數查看更多選項。為了讓 delombok 將單個 java 檔案的轉換結果直接列印到標準輸出,您可以使用
java -jar lombok.jar delombok -p MyJavaFile.java
javac 的 -classpath
、-sourcepath
和 --module-path
選項在 delombok 中被複製為 --classpath
、--sourcepath
和 --module-path
。
在 ant 中執行 delombok
lombok.jar
包含一個 ant 任務,可以為您應用 delombok。例如,要為您的專案建立 javadoc,您的 build.xml
檔案看起來會像這樣
<target name="javadoc"> <taskdef classname="lombok.delombok.ant.Tasks$Delombok" classpath="lib/lombok.jar" name="delombok" /> <mkdir dir="build/src-delomboked" /> <delombok verbose="true" encoding="UTF-8" to="build/src-delomboked" from="src"> <format value="suppressWarnings:skip" /> </delombok> <mkdir dir="build/api" /> <javadoc sourcepath="build/src-delomboked" defaultexcludes="yes" destdir="build/api" /> </target>
除了
from
屬性之外,您還可以巢狀 <fileset>
節點。delombok
支援 sourcepath
、classpath
和 modulepath
作為參數或作為巢狀元素,或作為巢狀 refid 元素,類似於 javac
任務。
在 maven 中執行 delombok
Anthony Whitford 編寫了一個 maven 外掛,用於 delomboking 您的原始碼。
在 sbt 中執行 delombok
Yang Bo 編寫了一個 sbt 外掛,用於 delomboking 您的原始碼。
限制
Delombok 嘗試盡可能保留您的程式碼,但註解可能會稍微移動,尤其是位於語法節點中間的註解。例如,任何出現在方法修飾符列表中的註解,例如 public /*comment*/ static ...
將會移到修飾符列表的前面。實際上,任何 java 原始碼解析工具都不會受到影響。
為了盡可能減少對程式碼風格的任何更改,如果原始碼檔案不包含 lombok 轉換,delombok 只會直接複製原始碼檔案,而不會對其進行任何更改。