【发布时间】:2020-07-03 16:47:47
【问题描述】:
我正在使用 java Mapstruct。使用gradle bootRun 运行正常,但我在使用 VSCode 调试和运行单元测试时遇到了一些问题:java.lang.ClassNotFoundException: Cannot find implementation。
信息:IDE VSCode、SpringBoot 2.2.2、Java SDK 11、Gradle 6.1.1
build.gradle:
compileJava {
options.compilerArgs = [
'-Amapstruct.defaultComponentModel=spring'
]
}
dependencies {
implementation 'org.mapstruct:mapstruct-jdk8:1.3.1.Final'
implementation 'org.mapstruct:mapstruct-processor:1.3.1.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.3.1.Final'
testAnnotationProcessor 'org.mapstruct:mapstruct-processor:1.3.1.Final'
}
launch.json 用于在 VSCode 中进行调试:
{
"type": "java",
"name": "Debug (Launch)-DemoApplication<demo>",
"request": "launch",
"mainClass": "com.api.demo.DemoApplication",
"projectName": "demo",
"args": [
"-Amapstruct.defaultComponentModel=spring",
"-DprocessorIntegrationTest.debug=true",
"-classpath",
"${workspaceFolder}/build/classes/"
],
"sourcePaths": [
"${workspaceFolder}/build/generated/"
]
}
映射器文件:
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface UserPayloadMapper extends GenericPayloadMapper<User, UserRegistryRequest, UserRegistryResponse> {
UserPayloadMapper INSTANCE = Mappers.getMapper(UserPayloadMapper.class);
@Mapping(source = "userId", target = "id")
public User fromRequest(UserRegistryRequest request);
public UserRegistryResponse toResponse(User user);
}
谁能帮我配置 VSCode 以运行调试和单元测试?在运行调试和单元测试之前我想,它不会加载生成的源代码,但我不知道如何修复它。
编辑:
对于单元测试文件,如果我添加@SpringBootTest(classes = { UserPayloadMapper.class }) 这将正常运行,但在单元测试代码内部没有与此映射器相关的任何内容,并且我有几个这样的映射器,我不能将它们全部放入每个单元测试中。
【问题讨论】:
标签: java visual-studio-code mapstruct