当前位置: 首页 > 知识库问答 >
问题:

如何用maven将lombok和JPAMetalModel处理器凝聚在一起

慕学海
2023-03-14

如何在maven构建中激活JPAMetaModelEntity处理器注释处理器时使用Lombok。

Maven配置:

[...]
<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <compilerArguments>
                    <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
                </compilerArguments>
            </configuration>
        </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.0-api</artifactId>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-jpamodelgen</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>
[...]

在构建过程(mvn clean install)中,元模型对象被正确地生成,但似乎Lombok注释处理器不再添加到Javac编译中。所有@Getter,@Setter,。。。不起作用。

共有3个答案

周墨一
2023-03-14

如果@Pierrick不完全正确,则解决方案是。您必须切换处理器的顺序。

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <compilerArguments>
            <processor>
                lombok.launch.AnnotationProcessorHider$AnnotationProcessor,org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor
            </processor>
        </compilerArguments>
    </configuration>
</plugin>
微生昌勋
2023-03-14

@Pierrick的解决方案是正确的。但我可以提供这个解决方案。因为我们可以用它添加许多处理器。

<plugin>
   <artifactId>maven-compiler-plugin</artifactId>
   <configuration>
      <annotationProcessorPaths>
         <path>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
         </path>
         <path>
             <groupId>org.hibernate</groupId>
             <artifactId>hibernate-jpamodelgen</artifactId>
             <version>5.4.1.Final</version>
         </path>
      </annotationProcessorPaths>
   </configuration>
</plugin>
农诚
2023-03-14

在研究了龙目岛项目后,我找到了一个解决方案。

当将JPAMetaModelEntityProcessor指定为javac注释处理器时,lombok处理器似乎被删除了。

要纠正这一点,我们只需在maven编译器插件中添加Lombok注释处理器:

[...]
<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <compilerArguments>
            <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor,lombok.launch.AnnotationProcessorHider$AnnotationProcessor</processor>
        </compilerArguments>
    </configuration>
</plugin>
[...]
 类似资料:
  • 问题内容: 我知道反对Java中的预处理器和宏的所有哲学观点。我不同意仅仅因为某些人可能滥用某种语言功能,就应该将其排除在所有人之外。 我想在Java和Scala代码中包含和宏,以进行有效的日志记录。由于对运行时性能的影响,对Exception的任何使用都是不可接受的。那些认为可以在“生产代码”中关闭日志记录的人应该留意Brian Kernighan的建议: 删除错误消息“现在程序正在运行”,就像

  • 本文向大家介绍什么是耦合和凝聚力?相关面试题,主要包含被问及什么是耦合和凝聚力?时的应答技巧和注意事项,需要的朋友参考一下 组件之间依赖关系强度的度量被认为是耦合。一个好的设计总是被认为具有高内聚力和低耦合性。 面试官经常会问起凝聚力。它也是另一个测量单位。更像是一个模块内部的元素保持结合的程度。 必须记住,设计微服务的一个重要关键是低耦合和高内聚的组合。当低耦合时,服务对其他服务的依赖很少。这样

  • 我在WSO2 Esb上工作了几个月,现在我需要使用迭代器中介器拆分传入的消息,将每个部分发送到一个endpoint,并使用聚合中介器收集答案。类似于这样: 它工作正常,但是,正如您所看到的,我在聚合器上定义了一个超时,这样超时中的消息就不会被“聚合”,而是会被“重定向”到故障序列。一般来说,任何发送到故障序列的消息都会“错过”聚合器,所以问题是:有什么方法可以将答案和错误聚合在一个消息中? “B计

  • 我喜欢使用Lombok,但它需要在IDEs设置中启用注释处理器。因为开发人员使用不同的IDE,CI/CD有自己的编译流程,而且我真的不想解释初级开发人员为什么需要选中此复选框,我正在寻找一种方法来避免选中此复选框。理想的情况下,我想让一个年轻人来运行git clone,然后/格拉德卢跑。Gradle是否可以完全设置注释处理器(无需手动单击)? 如果它能在比IntelliJ IDEA更多的地方工作,

  • 在我的spring批处理代码中,我正在读取一个csv文件,将其处理成一个bean,并尝试用Writer中的值获取该bean。但我无法在Writer中找到豆子。是包含csv文件中的值的bean,我正试图在Writer中获取这些值。我还将bean初始化为一个公共变量,希望它能由读取器、处理器和写入器处理。甚至在之前使用了和注释。请帮我解决这个问题。下面是我的代码,

  • 所以基本上我有会计课。我有数据。我想将这些对象发送到我与生产者的主题中。现在没关系。稍后,我想使用 Kafka 流进行聚合,但我不能,因为某些 Serde 属性在我的配置中是错误的,我认为 :/。我不知道错误在哪里。我的制作人工作正常,但我无法聚合。有人帮我查看我的 kafka 流代码吗?我的帐户类: 我的Account类有两个类Serializer和Deserializer。序列化程序: 反序列