After updating to Intellij 2017.2, building my project creates an /out
directory that contains generated source files and resource files. These files duplicate
IntelliJ IDEA is no longer sharing the output with Gradle, please see this ticket for details.
You can either override it via the following configuration:
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")
}
}
or delegate the build to Gradle: File | Settings | Build, Execution, Deployment | Build Tools | Gradle | Runner => Delegate IDE build/run actions to gradle.
File | Project Structure | Project Settings | Modules | Paths tab | Compiler output
Select 'Inherit project compile output path' to continue using /build
for build artifacts
Here is my understanding:
Basically, this is a work-around for an incompatibility issue between
Gradle build path
andIDEA output path
.
- the issue is - https://github.com/gradle/gradle/issues/2315
- the solution is - keep these two directories seperate, therefore you have two (
out/
andbuild/
) https://youtrack.jetbrains.com/issue/IDEA-189063