如何在gradle项目中配置mapstruct

问题描述 投票:0回答:1

我尝试将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 上,仅生成预期的、理想的实现,构建成功,并进行测试。

spring-boot gradle mapstruct
1个回答
0
投票

从项目中删除 .idea 文件夹并在 idea 中重新打开后,问题消失了。

© www.soinside.com 2019 - 2024. All rights reserved.