我的项目有很多模块,我们正在使用带有少量代码生成器的 gradle。示例配置:
sourceSets {
...
swagger {
compileClasspath = configurations.swaggerCompile
java {
srcDir file("${project.buildDir.path}/build/generated/source/swagger/")
}
}
main {
java {
srcDirs 'build/generated/source/proto/main/...'
}
}
test {
java {
srcDirs 'build/generated/source/proto/main/...'
}
}
}
ext {
generatedSourcesDir = 'build/generated/source'
}
protobuf {
...
generatedFilesBaseDir = "${buildDir}/generated-src/..."
}
项目不使用 Intellij 编译,因为它在指定目录和 Intellij 生成的 /out/ 目录中生成类。
例如在以下位置生成相同的重复类:
\out\production\classes\generated\ - Intellij \build\generated-src..\ - Gradle
它给了我数百条错误消息,例如: Error:(30, 14) java: duplicate class: com.xxx.xxx.xxx.YourClass 我已经尝试了在这里和 Intellij 论坛上可以找到的所有内容。没有什么对我有用。
我什至尝试在 File > Settings > Build, Execution, Deployment > Compiler > Excludes 中排除“out”目录,但它也不起作用。
唯一的方法是构建项目,手动删除所有“out”目录,然后禁用注释处理器。但这不是使其工作的最佳方式。