【问题标题】:Lombok on Jenkins詹金斯的龙目岛
【发布时间】:2016-03-06 19:32:15
【问题描述】:

我刚刚开始使用 Lombok 的能力,通过修改其引导类路径在本地 Eclipse 环境中为 Java bean 自动生成 getter 和 setter:

-vmargs -javaagent:lombok.jar -Xbootclasspath/a:lombok.jar

它在本地运行良好,但是由于我们的应用程序生命周期需要 Jenkins 构建,我有点怀疑那些 @Getter 和 @Setter 注释在代码将在我们的 CI 环境中运行时影响代码的方式。

到目前为止,Lombok 触及了我们的领域层,并且由于我们使用其他框架,这些框架依赖于在运行时在模型上拥有 getter/setter 才能让它们工作,我想对 Lombok 的字节码修改是如何完成的有更多的了解在我完全承诺使用它之前。

这些注释自动生成的所有方法是否仅在 pom.xml 文件中具有 Lombok 的依赖项后在 Jenkins 中可用,或者我是否还需要如上所述修改整个 Jenkins 的启动脚本。或者也许只是 Jenkins 的工作需要以某种方式进行修改以结合 Lombok 的字节码修改行为?

如果有人尝试并成功地将 Lombok 与 Jenkins CI 结合起来,我会很乐意听取他们的经验并将他们吸收到我们的 DevOps 流程中。

提前谢谢你。

【问题讨论】:

    标签: jenkins continuous-integration lombok bytecode-manipulation devops


    【解决方案1】:

    在你的 pom 文件中拥有 Lombok 依赖项(“提供”)应该可以完成这项工作。您可以使用mvn package 在本地计算机上的命令行上对此进行测试。你不需要-vmargs 或其他任何东西。

    Lombok 在编译阶段挂钩,并在类文件中生成正确的字段、方法和代码。在类文件上工作的所有内容甚至都不需要知道它是由 Lombok 生成的。

    如果由于某种原因您需要处理包含生成代码的源文件,您也可以先使用Lombok Maven Plugin 运行delombok

    在我的公司,我们成功地使用了 Jenkins 和 Lombok。

    披露:我是 Lombok 开发人员。

    【讨论】:

    • 不适用于 vals,出现此错误 - 错误:不兼容的类型:CustomType 无法转换为 val
    • 按照你的建议,我可以通过mvn package 复制它。但是,当我在maven-compiler-plugin -> <annotationProcessorPaths> 中提到龙目岛时,我的问题就解决了。希望这对某人有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    相关资源
    最近更新 更多