0

我的项目有很多模块,我们正在使用带有少量代码生成器的 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”目录,然后禁用注释处理器。但这不是使其工作的最佳方式。

4

0 回答 0