java - 为什么休眠验证会破坏带有 lombok 依赖项的编译?
问题描述
这是带有 lombock 的 POJO(版本 1.16.22)示例:
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import lombok.Builder;
import lombok.Value;
@Value
@Builder
@JsonDeserialize(builder = MyClass.MyClassBuilder.class)
public MyClass {
private final Long id;
}
在这里一切都很完美。但是在将休眠验证器添加到pom.xml
:
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.10.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>6.0.10.Final</version>
</dependency>
我在maven编译过程中遇到了异常:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project my-impl: Compilation failure: Compilation failure:
[ERROR] /C:/path/MyClass.java:[12,42] cannot find symbol
[ERROR] symbol: class MyClassBuilder
[ERROR] location: class my_package.MyClass
- hibernate 验证如何以及为什么会影响 lombock?
- 如何解决这个问题?
解决方案
在此示例中,我指定 Lombok 注释处理器应在 MapStruct 处理器之前使用:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.2.0.Final</version>
</path>
</annotationProcessorPaths>
<compilerArgs>
<compilerArg>
-Amapstruct.defaultComponentModel=cdi
</compilerArg>
</compilerArgs>
</configuration>
</plugin>
我认为您可以以类似的方式为 Lombok 和 Hibernate Validator 指定排序。
我认为这是你需要的:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.22</version>
</path>
<path>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>6.0.10.Final</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
推荐阅读
- c# - C# Excel - 如何切换到现有工作表并进行编辑?
- python - 用 movemouseEvent 停止窗口跳跃
- python - Tensorflow:batch_size 取决于什么?
- c# - 如果属性返回类型接口具有嵌套属性返回类型,则 DataContractJsonSerializer 问题
- android - 适用于 Android 的 Jasonette Webcontainer 应用程序忽略多部分表单
- julia - JuliaDB groupby:将总和与常量混合
- angular - 自动将 .ng-invalid 应用于其他元素
- amazon-web-services - 无法为 kinesis 视频流制作制作人
- python - Python 中的实例方法
- vba - 自动更新饼图