作者:GGG-敏 | 来源:互联网 | 2023-01-29 12:17
更新到Intellij 2017.2后,构建我的项目会创建一个/out
包含生成的源文件和资源文件的目录.这些文件复制已包含的文件,/build
并导致duplicate class
生成的类的编译器错误.我在Gradle或IntelliJ中需要修复的任何想法?
1> CrazyCoder..:
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:File | 设置| 构建,执行,部署| 构建工具| Gradle | Runner =>委派IDE构建/运行操作以进行gradle.
将IDE构建/运行操作委派给gradle的速度要慢得多.:(
@JackB不要混淆生成项目的`gradle idea`命令行和IntelliJ IDEA导入项目时使用的`idea`插件,它们是无关的并且会产生不同的项目文件。
您现在有两个输出文件夹。脚本本身将在build文件夹中构建所有内容。因此,如果您希望某些任务使用gradle生成一些Java类,它们将始终在build文件夹中生成。和ide in out文件夹。您不能手动将其设置为源文件夹,因为每个gradle构建都将重置您的自定义设置。IDE仅编译显式源集,生成的集甚至不可单击或遍历。至少在2017年以前,我可以在build / classes / ...中添加一个伪造的源,而ide可以找到它,现在不再可用。变得一团糟。
将IDE与Gradle或Maven之类的脚本一起使用的全部目的是,IDE可以拾取gradle脚本,并以最少的麻烦迅速构建项目。但是,如果您每次必须构建gradle脚本,则所有操作都会变慢。抱歉,您正在使一个非常有用的工具无效。
这样做的问题是IntelliJ不会执行资源过滤,所以运行时说用springResource用resourceFiltering进行yml文件的运行,由于令牌没有被IntelliJ代替,因此您的母鸡运行失败。
2> Peter..:
档案| 项目结构| 项目设置| 模块| 路径选项卡| 编译器输出
选择"继承项目编译输出路径"以继续使用/build
构建工件
IntelliJ IDEA不再与Gradle共享输出,有关详细信息,请参阅https://youtrack.jetbrains.com/issue/IDEA-175172.
@CrazyCoder,感谢youtrack问题的有趣链接.讨论建议(以及其他事项)尝试将IDEA构建/运行委托给Gradle.我有'out`目录的重复(但不同)结构的类似问题,但在设置**File |之后 设置| 构建,执行,部署| 构建工具| Gradle | Runner =>委托IDE构建/运行动作以进行gradle**我得到了更好的结果.也许不适合所有人,但可能是许多人的方式.
但是只要你运行`gradle build`,构建目录就会返回所有重复项