我正在使用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>
现在,我在构建项目时看到了预期的警告。