美文网首页
lombok-maven-plugin delombok你的源码

lombok-maven-plugin delombok你的源码

作者: Joker__k | 来源:发表于2018-11-22 10:35 被阅读0次

现在有越来越多的人喜欢用lombok简化自己的代码,但是在用maven打包生成源码时就会碰到一个问题

源码是用lombok注解的,class文件是lombok根据你的java代码生成出来的,别人在引用你的jar包的时候,点击查看源码,就会发现class文件匹配不上你的源码

如果你使用的是IntelliJ IDEA,打开源码,就会出现以下的错误信息 1554895080938.jpg

这种问题在你写一些client包或者一些工具包提供给他人使用的时候会碰到,一般人可能就会选择忽略,但是这个问题在debug的时候可能会定位不到源码中的那一行真正的代码,还是需要想办法解决的

使用lombok-maven-plugin插件就能解决问题

<plugin>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok-maven-plugin</artifactId>
    <version>1.18.4.0</version>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>delombok</goal>
            </goals>
            <configuration>
                <addOutputDirectory>false</addOutputDirectory>
                <sourceDirectory>src/main/java</sourceDirectory>
                <formatPreferences>
                    <pretty/>
                </formatPreferences>
            </configuration>
        </execution>
    </executions>
</plugin>

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插件生成完的源码目录

<build>
    <sourceDirectory>${project.build.directory}/generated-sources/delombok</sourceDirectory>
</build>

如果你使用了IDE,它会读取sourceDirectory当做你的源码目录,这样就不对了,所以我们把这个目录添加到单独的profile里

<profiles>
    <profile>
        <id>delombok</id>
        <properties>
            <src.dir>${project.build.directory}/generated-sources/delombok</src.dir>
        </properties>
    </profile>
</profiles>

sourceDirectory里使用

<build>
    <sourceDirectory>${src.dir}</sourceDirectory>
</build>

设置默认值

<properties>
    <src.dir>src/main/java</src.dir>
</properties>

然后使用命令mvn install -Pdelombok clean就可以打包了

另外,上面这种方法也是无奈之举,也是不够优雅的,但是这个插件的作者至今也没解决这个问题,期待着哪天这个问题解决了有人能告诉我

相关文章

网友评论

      本文标题:lombok-maven-plugin delombok你的源码

      本文链接:https://www.haomeiwen.com/subject/hdlhqqtx.html