項目構建總是報錯:
錯誤提示1:java:重復類
或
錯誤提示2:Internal error in the mapping processor: java.lang.RuntimeException: javax.annotation.processing.FilerException: Attempt to recreate a file
排查發現build/generated/sources/annotationProcessor路徑下會生成2個同名類導致,
IDEA和Gradle會各自構建生成文件造成沖突。
(起初以為是mapstruct與lombok沖突導致,后附mapstruct與lombok的引入配置)
解決方案:
IDEA-》設置-》構建、執行、部署-》構建工具-》Gradle
使用此工具構建/運行:IntelliJ IDEA
使用此工具運行測試:IntelliJ IDEA
Clean后再重新構建即可
環境:
Jdk17+Spring boot 3.3.13+Gradle
build.gradle文件內容:
plugins {id 'java'id 'org.springframework.boot' version '3.3.13'id 'io.spring.dependency-management' version '1.1.7'
}group = 'xxxx'
version = '0.0.1-SNAPSHOT'java {toolchain {languageVersion = JavaLanguageVersion.of(17)}
}tasks.withType(JavaCompile).configureEach {options.encoding = "UTF-8"
}configurations {compileOnly {extendsFrom annotationProcessor}
}repositories {maven {url 'https://maven.aliyun.com/repository/public'}mavenCentral()
}dependencies {// Spring Boot 核心依賴implementation 'org.springframework.boot:spring-boot-starter-web'implementation 'org.springframework.boot:spring-boot-starter-aop'annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'compileOnly 'org.projectlombok:lombok'annotationProcessor 'org.projectlombok:lombok'//略...implementation 'org.mapstruct:mapstruct:1.5.5.Final' annotationProcessor "org.mapstruct:mapstruct-processor:1.5.5.Final"annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:0.2.0'//略...
}tasks.named('test') {useJUnitPlatform()
}