1

Buildship 1.0.14 で Eclipse Mars.2 (4.5.2) を使用しています。Gradle のバージョンは 2.12 です。

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 でこの問題を解決するのを手伝ってくれませんか?

4

2 に答える 2

2

ここで提供したコード サンプルを参照して回答します。

war プラグインを使用していませんが、代わりに という独自のカスタム構成を宣言していますprovidedCompile。Gradle とひいては、buildship/eclipse は何providedCompileを意味するのかわかりません。したがって、リストした依存関係はprovidedCompile、コンパイル時の依存関係として使用されていません。

したがって、インポートステートメントはコンパイル時エラーになります-Eclipseとgradleコマンドラインの両方でgradle build

providedCompile次のようにして、コンパイル クラスパスに追加できます。

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

プロジェクトに Eclipse プラグインも追加する場合は、Eclipse コンパイル クラス パスを次のように変更できます。

eclipse {
  classpath {
    plusConfigurations += [configurations.providedCompile]
  }
}
于 2016-04-15T15:43:08.730 に答える
0

公式のバグトラッカーの担当者は、gradle 2.12 でcompileOnlyスコープを使用できるようになり、デフォルトで Eclipse にも接続されていると教えてくれました。

于 2016-04-15T17:42:11.110 に答える