2016-09-27 2 views
1

私は自分のワークスペースに3つのEclipseプロジェクト(プロジェクトA、プロジェクトB、プロジェクトC)を持っています。プロジェクトBとCは私のbuild.gradleファイルでプロジェクトA.Buildship - 他のEclipseプロジェクトを依存関係にする

に依存して、私はを参照するためにBとCに依存関係を設定している:

repositories { 
    mavenCentral() 
    mavenLocal() 
} 

dependencies { 
    compile('com.example:projectA:1.0') 
} 

しかし、私は右クリックしたときとプロジェクトBまたはCのGradle-> Refresh Gradle Projectを選択すると、projectAの依存関係を解決できないことが示されます。

私はMars 4.5.2とBuildshipバージョン1.0.20を使用しています。私は、リリースされたBuildship 2.0は他のEclipseプロジェクトを依存関係として参照できるようにサポートを提供することを理解しています。ただし、プロジェクトAをレポにインストールしてプロジェクトBとCで参照するにはどうしたらいいですか? Buildship Gradle TasksにプロジェクトAのインストールオプションが表示されません。

+0

gradleコマンドラインを使用する場合、上記の設定は正常に構築されますか? './gradlew projectB:build' – Jolta

+0

いいえ、「com.example:projectA:1.0を見つけることができませんでした。以下の場所で検索しました:「場所にはローカルレポが含まれています。ローカルのrepoファイルシステムをナビゲートすると、projectAのパスも見つからないため、プロジェクトAをローカルリポジトリにインストールできないことが問題です。しかし、ビルドシップを使ってプロジェクトAをインストールする方法がわかりません。 – James

+0

あなたの問題はBuildshipに関連していないと思います...私は答えを投稿します。 – Jolta

答えて

1

GAV(グループアーティファクトバージョン):com.example:projectA:1.0を使用して依存関係を追加しました。

GAVを使ってgradleに依存関係を宣言すると、gradleはそれが知っているすべての利用可能なMavenまたはIvyリポジトリの依存関係を調べるべきだとみなします。 GAVを解決できない理由は、ビルドしているリポジトリにプロジェクトAを公開していないということです。

あなたはうちの2つの方法があります。

  1. は、MavenのリポジトリにプロジェクトAの出力(jarファイル)を公開します。 Maven publishing pluginを適用する必要があります。たとえば、 "gradle publishToMavenLocal"を使用してローカルレポに公開することができます。

  2. 依存関係をプロジェクト依存として宣言し、プロジェクトを維持してくださいas sub-project of the same parent project。 あなたがcompile project(':projectA')

後者はおそらくで動作するように多くの方が簡単であるとの依存関係を宣言するだろう。

ところで、Buildship自体はおそらくこの問題とほとんど関係がありません。むしろGradleやMavenのような依存関係追跡システムを構築する一般的な問題です。私は、Gradleがこの問題を3.0とそれ以上でどのように解決するかについていくつかの言及を見たことを覚えていますが、現時点ではリンクを見つけることができません。

+1

Gradle 3.1では[複合ビルド](https://docs.gradle.org/current/userguide/composite_builds.html)はオプションです。 Buildship 1.0.20ではサポートされていませんが、2.0になります。その間、私はMavenパブリッシングプラグインを使用することを選択しています。一度サポートされたコンポジットを使用するように変換するのは簡単です。私の既存のリポジトリ(SVN)ディレクトリ構造は、Gradle標準のマルチプロジェクト構造で動作します。 – James

+0

ポインタありがとう!プロジェクト間の依存関係が今までのところGradleにとって大きな不満だったので、私はこれを使うことに目を通しています。 – Jolta