web-dev-qa-db-ja.com

Intellij 2017.2 / outディレクトリを使用してビルドすると、/ buildディレクトリのファイルが重複します

Intellij 2017.2に更新した後、プロジェクトをビルドすると、生成されたソースファイルとリソースファイルを含む/outディレクトリが作成されます。これらのファイルは、すでに/buildに含まれているファイルを複製し、生成されたクラスに対してduplicate classコンパイラエラーを発生させます。 GradleまたはIntelliJで必要な修正に関するアイデアはありますか?

58
Peter

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ビルド/実行アクションを段階的に実行します。

64
CrazyCoder

ファイル|プロジェクト構造|プロジェクト設定|モジュール| [パス]タブ|コンパイラー出力

[プロジェクトコンパイル出力パスを継承]を選択して、ビルドアーティファクトに/buildを引き続き使用します

14
Peter

私の理解は次のとおりです。

基本的に、これはGradle build pathIDEA output pathの間の非互換性の問題の回避策です。

1
leo