现在有越来越多的人喜欢用lombok
简化自己的代码,但是在用maven
打包生成源码时就会碰到一个问题
源码是用lombok
注解的,class
文件是lombok
根据你的java
代码生成出来的,别人在引用你的jar包的时候,点击查看源码,就会发现class文件匹配不上你的源码
这种问题在你写一些client包或者一些工具包提供给他人使用的时候会碰到,一般人可能就会选择忽略,但是这个问题在debug的时候可能会定位不到源码中的那一行真正的代码,还是需要想办法解决的
使用lombok-maven-plugin插件就能解决问题
org.projectlombok
lombok-maven-plugin
1.18.4.0
generate-sources
delombok
false
src/main/java
sourceDirectory
的默认值为src/main/lombok
里,但是一般我们代码会放在src/main/java
里
formatPreferences
是配置delombok
代码的样式,其他参数可以参考https://github.com/rzwitserloot/lombok/blob/master/src/delombok/lombok/delombok/FormatPreferences.java
插件生成完的代码会在generated-sources/delombok
目录下,而使用maven-source-plugin
打包,会对sourceDirectory
下的源码进行打包,sourceDirectory
的默认值是src/main/java
,所以我们要把他改成lombok插件生成完的源码目录
${project.build.directory}/generated-sources/delombok
如果你使用了IDE,它会读取sourceDirectory
当做你的源码目录,这样就不对了,所以我们把这个目录添加到单独的profile里
delombok
${project.build.directory}/generated-sources/delombok
在sourceDirectory
里使用
${src.dir}
设置默认值
src/main/java
然后使用命令mvn install -Pdelombok clean
就可以打包了
另外,上面这种方法也是无奈之举,也是不够优雅的,但是这个插件的作者至今也没解决这个问题,期待着哪天这个问题解决了有人能告诉我