【发布时间】:2017-12-23 19:20:52
【问题描述】:
更新到 Intellij 2017.2 后,构建我的项目会创建一个 /out 目录,其中包含生成的源文件和资源文件。这些文件复制了已包含在/build 中的文件,并导致生成的类出现duplicate class 编译器错误。关于我在 Gradle 或 IntelliJ 中需要修复的任何想法?
【问题讨论】:
标签: java intellij-idea gradle
更新到 Intellij 2017.2 后,构建我的项目会创建一个 /out 目录,其中包含生成的源文件和资源文件。这些文件复制了已包含在/build 中的文件,并导致生成的类出现duplicate class 编译器错误。关于我在 Gradle 或 IntelliJ 中需要修复的任何想法?
【问题讨论】:
标签: java intellij-idea gradle
IntelliJ IDEA 不再与 Gradle 共享输出,请see this ticket for details。
您可以通过以下配置覆盖它:
allprojects {
apply plugin: 'idea'
idea {
module {
outputDir file('build/classes/main')
testOutputDir file('build/classes/test')
}
}
if(project.convention.findPlugin(JavaPluginConvention)) {
// Change the output directory for the main and test source sets back to the old path
sourceSets.main.output.classesDir = new File(buildDir, "classes/main")
sourceSets.test.output.classesDir = new File(buildDir, "classes/test")
}
}
或将构建委托给 Gradle:文件 |设置 |构建、执行、部署 |构建工具 |摇篮 | Runner => 将 IDE 构建/运行操作委托给 gradle。
【讨论】:
gradle idea命令行和IntelliJ IDEA导入项目时使用的idea插件混为一谈,这些没有关系,会产生不同的项目文件。
文件 |项目结构 |项目设置 |模块 |路径选项卡 |编译器输出
选择“继承项目编译输出路径”以继续使用 /build 构建工件
【讨论】:
gradle build,构建目录就会返回所有的副本
out 目录的重复(但不同)结构方面遇到了类似的问题,但是在设置 File | 之后设置 |构建、执行、部署 |构建工具 |摇篮 | Runner => 将 IDE 构建/运行操作委托给 gradle 我得到了更好的结果。也许不适合所有人,但可能是许多人的方式。
这是我的理解:
基本上,这是解决两者之间不兼容问题的解决方法
Gradle build path和IDEA output path。
- 问题是 - https://github.com/gradle/gradle/issues/2315
- 解决方案是 - 将这两个目录分开,因此您有两个(
out/和build/)https://youtrack.jetbrains.com/issue/IDEA-189063
【讨论】: