2016-08-09 20 views
1

私はプロジェクトxxxWebプロジェクトxxxAPIを使用しています。どちらのプロジェクトも親プロジェクトのサブプロジェクトです。プロジェクトxxxAPIはサードパーティのライブラリjar jar1.jarを使用しています。これはクラスsomepackage.ClassAです。プロジェクトxxxAPI自体もxxxWebプロジェクトが使用する予定のsomepackage.ClassAと同じです。Eclipse Gradle buildshipインポートサブプロジェクトのコンパイルエラー

ただし、somepackage.ClassAからjar1.jarをロードすると、jar1/somepackage/ClassAにはxxxAPI/somepackage/ClassAのようなフィールドがないため、コンパイルエラーが発生します。

xxxWebプロジェクトのクラスパスでは、Eclipseの最後にxxxAPIプロジェクトを配置します。その理由はおそらく、コンパイラがxxxAPI/somepackage/ClassAではなくjar1/somepackage/ClassAを選択する理由です。

ただし、これはIntelliJでは問題ありません。

これに対して治療法はありますか?

ビルドスクリプトはうまく動作するので、これはGradleのEclipseプラグインに関する質問であり、生成されたクラスパスを操作する方法は?

+0

これは、読みやすい形式にフォーマットする必要があります。絵もいいアイデアかもしれない。 –

答えて

0

これはバージョン2.14.1以降のgradleのバグです。回避策は、Eclipse Gradleプラグインによって与えられたフックを使用して、重複したクラスパス項目を削除することです。

eclipse { 
    classpath { 
     file { 
      whenMerged { cp -> 
       cp.entries = cp.entries.unique{a,b -> a.path <=> b.path} 
      } 
     } 
    } 
} 
関連する問題