Intellij 2017.2に更新した後、プロジェクトをビルドすると、生成されたソースファイルとリソースファイルを含む/out
ディレクトリが作成されます。これらのファイルは、すでに/build
に含まれているファイルを複製し、生成されたクラスに対してduplicate class
コンパイラエラーを発生させます。 GradleまたはIntelliJで必要な修正に関するアイデアはありますか?
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に委任します:ファイル|設定|ビルド、実行、展開|ビルドツール| Gradle |ランナー=>委任IDEビルド/実行アクションを段階的に実行します。
ファイル|プロジェクト構造|プロジェクト設定|モジュール| [パス]タブ|コンパイラー出力
[プロジェクトコンパイル出力パスを継承]を選択して、ビルドアーティファクトに/build
を引き続き使用します
私の理解は次のとおりです。
基本的に、これは
Gradle build path
とIDEA output path
の間の非互換性の問題の回避策です。
- 問題は- https://github.com/gradle/gradle/issues/2315
- 解決策は-これらの2つのディレクトリを別々に保つため、2つの(
out/
とbuild/
)があります https://youtrack.jetbrains.com/issue/IDEA-18906