我正在使用Mapstruct 1.3.0来投影此源对象。

import lombok.Data;
@Data
public class SimpleSource {
    private String firstField;
    private String secondField;
    private String noMappingDefined;
}


进入此DTO:

import lombok.Data;
@Data
public class SimpleDestination {

    private String field1;
    private String field2;

}


在我的界面中,我尚未为“ noMappingDefined”字段定义任何映射

@Mapper
public interface TestMapper {
    @Mapping(source = "firstField", target = "field1")
    @Mapping(source = "secondField", target = "field2")
    SimpleDestination sourceToDestination(SimpleSource source);

    @InheritInverseConfiguration
    SimpleSource destinationToSource(SimpleDestination destination);

}


在我构建项目时,将unmappedTargetPolicy设置为POM中的editorArgs的WARN不会导致任何通知,并且在Mapstruct生成的目标类中无处可见没有映射的字段。

        <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <annotationProcessorPaths>
                <path>
                    <groupId>org.mapstruct</groupId>
                    <artifactId>mapstruct-processor</artifactId>
                    <version>1.3.0.Beta2</version>
                </path>
                <path>
                    <groupId>org.projectlombok</groupId>
                    <artifactId>lombok</artifactId>
                    <version>${lombok.version}</version>
                </path>
            </annotationProcessorPaths>
            <compilerArgs>
                <compilerArg>
                    -Amapstruct.defaultComponentModel=spring
                </compilerArg>
                <compilerArg>
                    -Amapstruct.unmappedTargetPolicy=WARN
                </compilerArg>
            </compilerArgs>
        </configuration>


生成的类不包含预期的未映射字段,但是我希望在构建项目时看到警告。

如果我将unmappedTargetPolicy更改为ERROR,则构建将失败。

无论是在POM中还是在接口上的@Mapper注释中配置此行为,行为都是相同的。

还有其他人遇到这个问题吗?我正在一个有数百个要映射的字段的项目中,并不是所有字段都很关键,但是很高兴知道是否错过了任何字段。

谢谢。

最佳答案

原来这是一个POM问题,我添加了showWarnings标记并将其设置为true;

            <showWarnings>
                true
            </showWarnings>
            <compilerArgs>
                <compilerArg>
                    -Amapstruct.defaultComponentModel=spring
                </compilerArg>
                <compilerArg>
                    -Amapstruct.unmappedTargetPolicy=WARN
                </compilerArg>
            </compilerArgs>


现在,我在构建项目时看到了预期的警告。

10-04 17:23