У меня есть многомодульный проект Maven (Repo), после гексагональной аркитектуры, со следующей структурой: < /p>
parent
├─ domain (Lombok)
├─ app (Lombok)
└─ infra (aggregator POM)
├─ output-adapters (MapStruct + Lombok) – depends on rest-api, bbdd and domain
├─ rest-api (OpenAPI generator + MapStruct + Lombok) - depends on domain
└─ bbdd (QueryDSL + Lombok).
< /code>
В модуле вывода-адаптеров Mapstruct генерирует классы реализации, но сгенерированные файлы .class часто содержат ошибки сборки.@Component
public class WorklogEntityMapperImpl {
@Autowired
private UserEntityMapper userEntityMapper;
@Autowired
private BusinessEntityMapper businessEntityMapper;
public WorklogEntityMapperImpl() {
throw new Error("Unresolved compilation problems: \n\tWorklogEntityMapper cannot be resolved to a type\n\tUserEntityMapper cannot be resolved to a type\n\tBusinessEntityMapper cannot be resolved to a type\n\tThe method domain2Infra(Worklog) of type WorklogEntityMapperImpl must override or implement a supertype method\n\tUserEntityMapper cannot be resolved to a type\n\tBusinessEntityMapper cannot be resolved to a type\n\tThe method infra2domain(WorklogEntity) of type WorklogEntityMapperImpl must override or implement a supertype method\n\tUserEntityMapper cannot be resolved to a type\n\tBusinessEntityMapper cannot be resolved to a type\n\tThe method finaMapping(WorklogEntity, Worklog.WorklogBuilder) is undefined for the type WorklogEntityMapperImpl\n\tThe method infra2domain(Iterable) of type WorklogEntityMapperImpl must override or implement a supertype method\n\tThe method domain2Infra(WorklogFilteredRequest) of type WorklogEntityMapperImpl must override or implement a supertype method\n");
}
....
}
< /code>
Модуль BBDD и REST-API Всегда правильно генерируют свои классы, единственная проблема, по-видимому,-это модуль-адаптеры. PrettyPrint-Override ">
org.apache.maven.plugins
maven-compiler-plugin
${maven.compiler.plugin.version}
false
-Amapstruct.defaultComponentModel=spring
-Amapstruct.verbose=true
org.mapstruct
mapstruct-processor
${org.mapstruct.version}
org.projectlombok
lombok
${lombok.version}
org.projectlombok
lombok-mapstruct-binding
${lombok-mapstruct-binding.version}
< /code>
и, наконец, только для модуля BBDD: < /p>
org.apache.maven.plugins
maven-compiler-plugin
com.querydsl
querydsl-apt
${querydsl.version}
jakarta
jakarta.persistence
jakarta.persistence-api
${jakarta-persistence.version}
org.projectlombok
lombok
${lombok.version}
< /code>
Эта проблема возникает как при строительстве с IntelliJ, так и при управлении Maven из CLI. Что наиболее сбивает с толку, так это то, что он кажется случайным: иногда MVN Clean Persify Run завершается успешно, но в других случаях такая же команда не выполняется с ошибками компиляции, описанными выше. Когда он попадает в это сломанное состояние, я не могу исправить его без большой проб и ошибок, и я в конечном итоге не смогу запустить приложение локально. То же самое с развертыванием приложения Dockerized в облако, оно никогда не работает и работает, как и ожидалось. Похоже, это проблема на локальном. 1.18.38 < /li>
QueryDsl 5.1.0 < /li>
< /ul>
Вопросы < /strong> < /p>
Зачем. pom.xml Поскольку он использует Q-классы из другого модуля (BBDD)? Типы? < /li>
< /ol>
Я почти все пробовал. Отойдя от QueryDLS, отключение инкрементной компиляции, пробуя много разных конфигураций Maven ... но Mapstruct. Классы всегда начинают проваливаться в какой -то момент
Подробнее здесь: https://stackoverflow.com/questions/797 ... en-project