2016-04-14 72 views
1

ビルドシップ1.0.14でEclipse Mars.2(4.5.2)を使用します。 Gradleのバージョンは2.12です。ビルドシップ付きEclipseのGradleプロジェクト依存関係

私のgradleプロジェクトをEclipseにインポートします。 インポート前に.projectまたは.classpathファイルが存在しません。すべてのモジュールが正常にインポートされました。しかし、Javaコードを持つほとんどすべてのプロジェクトは、依存関係を逃して赤い "X"を表示しています。

エラーが発生したJavaファイルを開くと、Eclipseがインポートを解決できないことがわかります。しかし、インポートされたクラスを名前で開くと、それは他のモジュールの依存関係で見つけることができます。

Gradle - > Refresh projectは役に立ちません。このようにルートbuild.gradleで宣言さ

必要な依存関係:

ext.library = [ 
    swagger: [ 
      [ group: "io.swagger", name: "swagger-annotations", version: "1.5.3" ], 
      [ group: "io.swagger", name: "swagger-core", version: "1.5.3" ], 
      [ group: "io.swagger", name: "swagger-jaxrs", version: "1.5.3" ] 
    ] 
] 

と私はこのようにそれを宣言したモジュールで:

dependencies { 
    providedCompile library.swagger 
} 

コマンドラインから、あるいはからgradle buildを実行するとEclipse、ビルドは成功です。

この問題を再現するための小さなプロジェクトの例は、github(RaGeに参加していただきありがとうございます)にあります。

Eclipseでこの問題を解決する手助けをしてもらえますか?

+0

どのようなgradleバージョンを使用していますか? – RaGe

+0

gradle warプラグインを使用していますか? – RaGe

+0

グレードバージョンは2.12です。はい、戦争のプラグインが使用されます。 – dds

答えて

1

hereのコードサンプルを参考にしてください。

あなたはwarプラグインを使用していませんが、providedCompileという独自のカスタム設定を宣言しています。グレードルと拡張によって、ビルドシップ/日食は何を意味するのかわからないprovidedCompileを意味します。したがって、providedCompileにリストされている依存関係は、コンパイル時の依存関係として使用されていません。

あなたのimport文は、時間のコンパイルエラーになるということになる - 日食にとGradleのコマンドラインからの両方gradle build

であなたが実行してコンパイルクラスパスにprovidedCompileを追加することができます:あなたはまた、追加した場合

sourceSets.main.compileClasspath += [configurations.providedCompile] 

をプロジェクトにEclipseのプラグイン、あなたがクラスパスをコンパイル日食変更することができます。

eclipse { 
    classpath { 
    plusConfigurations += [configurations.providedCompile] 
    } 
} 
+0

Eclipseプラグインを追加して設定を完了しました。ありがとう! – dds

+0

素晴らしい!答えをアップアップすることも考慮する必要があります。 – RaGe

0

上の男公式のバグトラッカーは、gradle 2.12でcompileOnlyスコープを使用できるようになりました。これはデフォルトでEclipseにも組み込まれています。

関連する問題