Мы используем mapstruct 1.20.final примерно 1,5 года с различными версиями Gradle — последняя версия 4.10.2. Мы хотим перейти на Gradle 5.4.1, который работает со всем, кроме mapstruct. Наша рабочая установка не была чистой. Поэтому решил начать заново. Старая рабочая установка была гибридной формой example на Github и теперь устаревшие настройки.
Начал снова с http://mapstruct.org/news/2013-07-08-using-mapstruct-with-gradle в качестве основы. Есть сильное ощущение, что это НЕ совместимо с Gradle 5. Примечания к выпуску Gradle 5 заявляет: Gradle больше не будет автоматически применять процессоры аннотаций, которые находятся в пути к классам компиляции — вместо этого используйте CompileOptions.annotationProcessorPath. Пытался сделать это, как описано в https://blog.gradle.org/incremental-compiler-avoidance#about-annotation-processors. Это работает для 4.10.2. В Gradle 5 это приводит к следующей ошибке: Не удалось выполнить задачу ':eu.educator.rest:compileJava'. Невозможно указать -processorpath или --processor-path через CompileOptions.compilerArgs. Вместо этого используйте свойство CompileOptions.annotationProcessorPath.
У нас многопроектная установка. В проекте «остальные» очищенный build.gradle выглядит так:
plugins {
id 'net.ltgt.apt' version '0.21'
}
configurations {
apt
}
dependencies {
apt libraries.mapstruct_processor
compileOnly libraries.mapstruct_processor
}
compileJava {
options.annotationProcessorPath = configurations.apt
}
Пробовал несколько настроек за последние 1,5 дня. НЕ могу заставить его работать. Поэтому, если у кого-то есть mapstruct, работающая с Gradle 5, я был бы очень признателен за рабочий build.gradle, подсказки, указатели.
PS. Как я могу заменить следующее версией, совместимой с Gradle 5.
tasks.withType(JavaCompile) {
options.compilerArgs = [
'-Amapstruct.suppressGeneratorTimestamp=true'
]
}