【问题标题】:How to configure jOOQ to generate using javax annotations or something else instead of jakarta annotations?如何配置 jOOQ 以使用 javax 注释或其他东西而不是 jakarta 注释生成?
【发布时间】:2022-02-25 04:33:28
【问题描述】:

就像标题所说的那样。 Jakarta 注解不在我的类路径中,所以我不知道为什么 jOOQ 使用这些注解生成 Java 类。我希望能够告诉它不要使用它,或者有办法指定它使用哪些验证注释。

我设置为 true 的唯一属性是 validationAnnotations,然后我到处都有 Jakarta 注释。任何想法如何将其配置为使用 javax 之类的其他东西?

我正在使用 jOOQ 代码生成 3.16.4

【问题讨论】:

    标签: java jooq jooq-codegen-maven


    【解决方案1】:

    我刚刚找到上面的博客文章,我不高兴。他们至少可以做的是使其可配置。

    我理解这种沮丧。我们都感觉到了。您找到的文章对此进行了描述:“一股浪潮正在席卷 Java 生态系统。它是将 javax 重命名为 jakarta 包名。”

    时钟在滴答作响。从 Spring Boot 3.0 开始,无论如何您都必须升级,甚至可能在此之前: https://spring.io/blog/2021/09/02/a-java-17-and-jakarta-ee-9-baseline-for-spring-framework-6

    其他框架也将很快升级。重命名对每个人来说都是痛苦的,是的,但是永远维护两个依赖项并没有太大的价值,尤其是如果库使用像 jOOQ 这样少的特性。

    替代方案记录在blog post you had referenced from a previous edit 中。社区几乎没有关于什么是更好的选择的反馈(当然有抱怨,但我不确定是否可以做更好的事情)。在您的特定情况下,您可以简单地正则表达式替换所有生成的输出以再次修补导入。这就是 jOOQ 本身对生成的 JAXB 注释所做的事情,因为即使是生成代码的 XJC 插件也没有准备好进行这种混乱的重命名。

    是的,本来可以有一个配置选项,但话说回来,对于 JAXB 和 JPA 的运行时依赖关系呢?这些不能轻易复制或配置。将两者都放在类路径上是否值得?还是要运送两个单独的发行版?不太可能。与 e.g. 相比,这是一个不同的情况。 Hibernate,它在很大程度上依赖于规范,但 jOOQ 并不,真的。

    我想我会使用旧版本。

    当然可以。但话又说回来,这真的值得吗?你用这个功能做什么?你能不生成这些注释吗?

    【讨论】:

    • 感谢您的回复。删除注释需要更大的更改,我们还没有准备好。现在我们将继续使用旧版本。
    • @user2798694:我明白了。而升级到雅加达也是一个大工程。用正则表达式修补输出怎么样,例如使用com.google.code.maven-replacer-plugin:maven-replacer-plugin?这只是重命名导入声明的问题......
    • 这是一个绝妙的提示。我会向团队介绍这个。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-10-15
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 2014-06-08
    • 2012-06-23
    • 2012-07-08
    相关资源
    最近更新 更多