我尝试将mapstruct添加到gradle spring boot项目中。 这是
build.gradle
文件的相关部分:
implementation 'org.mapstruct:mapstruct:1.4.2.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:0.2.0'
这是我的界面:
@Mapper
public interface LogMessageMapper {
@Mapping(target = "content", ignore = true)
LogMessageDto toLogMessageDto(LogMessage source);
@AfterMapping
default void setContentString(LogMessage source, @MappingTarget LogMessageDto target) {
target.setContent(source.getContent().toString());
}
}
我在两个地方收到了映射器接口的生成实现: 首先预期但我的代码未使用:
build/generated/sources/.../LogMessageMapperImpl
第二个意外但被我的代码使用:
app/src/main/generated/.../LogMessageMapperImpl
如何配置 gradle 才能使我的代码使用生成的类?感谢您的任何建议。
UPD:意外的实现仅出现在从 IntelliJ Idea 启动应用程序或从 Idea 运行测试时。在 gradle 上,仅生成预期的、理想的实现,构建成功,并进行测试。
从项目中删除 .idea 文件夹并在 idea 中重新打开后,问题消失了。