Я работаю с 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'
}
запуск. 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 })
, это будет работать правильно, но внутри кода модульного теста ничего не имеет отношения к этому преобразователю, и у меня есть несколько подобных преобразователей, я не могу поместить их все в каждый модульный тест.