Я использую Java 17, Gradle в качестве инструмента сборки, ниже приведена моя зависимость от Gradle.
implementation 'org.mapstruct:mapstruct:1.5.5.Final'
implementation 'org.mapstruct:mapstruct-processor:1.5.5.Final'
Я пытаюсь понять MapStruct, но при построении Gradle bootRun вызывается MapStruct не генерирует никакой реализации.
Вот код:
@Mapper(componentModel = "spring")
public interface SimpleMapper {
@Mapping(source = "name",target = "name")
@Mapping(source = "totalCount",target = "count")
SimpleDto mapToDto(SimpleRO ro);
}
SimpleDto.java
public class SimpleDto {
private String name;
private String count;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCount() {
return count;
}
public void setCount(String count) {
this.count = count;
}
}
SimpleRO.java
public class SimpleRO {
private String name;
private String totalCount;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTotalCount() {
return totalCount;
}
public void setTotalCount(String totalCount) {
this.totalCount = totalCount;
}
}
Только добавление зависимости не подключит Mapstruct к процессу сборки, это то, что делает оператор annotationProcessor
.
Согласно Документации по установке MapStruct вы должны включить Mapstruct как зависимость, а также как annotationProcessor
в свой build.gradle. Нравиться
dependencies {
...
implementation 'org.mapstruct:mapstruct:1.5.5.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final'
}
В файле, который вы показали, вторая часть (mapstruct-processor
) также была указана как implementation
вместо annotationProcessor
.
Вы должны зарегистрировать
org.mapstruct:mapstruct-processor:1.5.5.Final
как обработчик аннотаций, а не как зависимость реализации, как вы это делаете сейчас. См. mapstruct.org/documentation/installation/#gradle для правильной конфигурации Gradle.