相关疑难解决方法(0)

如何指示 Mapstruct 使用 lombok 构建器?

当我尝试使用私有默认构造函数但使用(lombok 生成的)构建器映射对象时,MapStruct 无法创建实现。

SomeMapperImpl.java:[20,27] SomeDto() 在 com.example.mapstructdemo.dto.SomeDto 中不是公开的;无法从外部包访问

到:

@Value
@Builder
public class SomeDto {
}
Run Code Online (Sandbox Code Playgroud)

模型:

@Value
@Builder
public class SomeModel {
}
Run Code Online (Sandbox Code Playgroud)

映射器接口:

@Mapper
public interface SomeMapper {
    SomeDto map(SomeModel someModel);
    SomeModel map(SomeDto someDto);
}
Run Code Online (Sandbox Code Playgroud)

来自 Pom.xml 的片段:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${compiler-plugin.version}</version>
        <configuration>
            <annotationProcessorPaths>
                <path>
                    <groupId>org.projectlombok</groupId>
                    <artifactId>lombok</artifactId>
                    <version>1.18.16</version>
                </path>
                <path>
                    <groupId>org.projectlombok</groupId>
                    <artifactId>lombok-mapstruct-binding</artifactId>
                    <version>0.2.0</version>
                </path>
                <path>
                    <groupId>org.mapstruct</groupId>
                    <artifactId>mapstruct-processor</artifactId>
                    <version>1.4.1.Final</version>
                </path>
            </annotationProcessorPaths>
        </configuration>
    </plugin>
Run Code Online (Sandbox Code Playgroud)

生成的实现:

@Generated(
    value = "org.mapstruct.ap.MappingProcessor",
    date = "2021-01-29T13:47:46+0100",
    comments = "version: 1.4.1.Final, compiler: javac, environment: Java …
Run Code Online (Sandbox Code Playgroud)

java lombok mapstruct

3
推荐指数
1
解决办法
737
查看次数

标签 统计

java ×1

lombok ×1

mapstruct ×1