更新到Intellij 2017.2之后,构建我的项目将创建一个/out
目录,其中包含生成的源文件和资源文件。这些文件复制已包含在其中的文件,/build
并导致duplicate class
生成的类的编译器错误。我在Gradle或IntelliJ中需要修复的任何想法吗?
Answers:
IntelliJ IDEA不再与Gradle共享输出,请参阅此故障单以获取详细信息。
您可以通过以下配置覆盖它:
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。
档案| 项目结构 项目设置| 模块| 路径标签| 编译器输出
选择“继承项目编译输出路径”以继续/build
用于构建工件
gradle build
构建目录,它的所有重复项就会返回
out
目录的重复(但有所不同)结构有类似的问题,但是在设置File | 设置| 构建,执行,部署| 生成工具| 摇篮| Runner =>委托IDE生成/运行操作来获得更好的结果。也许不是每个人都适合,但对于许多人来说可能就是这样。
这是我的理解:
基本上,这是
Gradle build path
和之间不兼容问题的解决方法IDEA output path
。
- 问题是-https://github.com/gradle/gradle/issues/2315
- 解决方案是-将这两个目录分开,因此您有两个(
out/
和build/
) https://youtrack.jetbrains.com/issue/IDEA-189063
gradle idea
生成项目的命令行和idea
在IntelliJ IDEA导入项目时使用的插件,它们不相关并且会生成不同的项目文件。