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 插件,用于 delombok 你的源代码。
在 sbt 中运行 delombok
Yang Bo 编写了一个 sbt 插件,用于 delombok 你的源代码。
局限性
Delombok 尝试尽可能地保留你的代码,但注释可能会稍微移动,特别是位于语法节点中间的注释。例如,任何出现在方法修饰符列表中间的注释,例如 public /*comment*/ static ...
,都将移到修饰符列表的前面。在实践中,任何 java 源代码解析工具都不会受到影响。
为了最大限度地减少对代码风格的任何更改,如果源文件不包含任何 lombok 转换,delombok 只会直接复制源文件,而不会对其进行任何更改。