2016-12-25 4 views
1

私は3つのJavaプロジェクトをフォルダ構造の隣に置いています:Proj1Proj2およびProj3です。 Proj1Proj2に依存し、Proj3に依存します。 2Gradleは依存関係チェイン内のプロジェクトを見つけることができません

については

rootProject.name = 'Proj3' 

rootProject.name = 'Proj2' 

include ':Proj3' 
project(':Proj3').projectDir = new File(settingsDir, '../Proj3') 

rootProject.name = 'Proj1' 

include ':Proj2' 
project(':Proj2').projectDir = new File(settingsDir, '../Proj2') 

とそのgradle.buildファイル:ここで

は自分gradle.settingsファイルです

apply plugin: 'java' 

dependencies { 
    compile project(':Proj3') 
} 
apply plugin: 'java' 

dependencies { 
    compile project(':Proj2') 
} 

については2番目と3番目のプロジェクトはGradleので罰金構築されていますが、私は第一を構築しようとすると、それは

は問題がプロジェクトの評価発生したことを不平を言う:Proj2を: 'パス ':Proj3'のプロジェクトがプロジェクト ':Proj2'に見つかりませんでした。

Proj2のビルド内にある)compile project(':Proj3')を指します。スタックトレースは

org.gradle.tooling.BuildExceptionで始まる:Gradleの配布「https://services.gradle.org/distributions/gradle-3.1-bin.zip」を使用したタイプのモデル「EclipseProject」を取得できませんでした。

なぜ第2のプロジェクトは、第1のビルド時に第3の罰金が突然見つからないのかわかりません。なぜ第2世代が第3世代をどのようにして検索するのか、第1世代は「Project and External Dependencies」フォルダに既に含まれています。

どうすればいいですか?

答えて

0

私はあなたが間違ったプロジェクト構成を作ったと思います。 1つのマルチモジュールプロジェクトに対して1つのファイルしか作成できません。この1つのファイルにすべてのモジュールを含める必要があります。

ので、構造がこのようなものかもしれません:

RootProject/ 
    build.gradle 
    settings.gradle 
    Proj1/ 
    build.gradle 
    Proj2/ 
    build.gradle 
    Proj3/ 
    build.gradle 

そしてsettings.gradle少なくとも含まれている必要がありますが、以下:その場合は

include 'Proj1', 'Proj2', 'Proj3' 

を、それはそう、あなたはいくつかの余分を持っている必要はありません。モジュール名またはディレクトリを変更する設定。あなたはofficial user guideでそれについて読むことができます。

+0

ありがとうございますが、proj2と3はユーティリティ/ライブラリの一種であり、他のプロジェクトで使用されるため、これらのプロジェクトは単一のものにしたくありません。 proj3がrootprojectの外側で必要とされるなら、あなたはどうしますか? – Mark

+0

次に、アーティファクトをいくつかのローカルリポジトリに公開し、他の依存関係と同じものを使用する必要があります。 – Stanislav

+0

これは動作します。これを行う方法はユーザーガイドで説明されていますか?それとも、デモンストレーションできますか? – Mark

0

何かを公開したり、ディレクトリ構造を変更したりせずに行う方法が見つかりました。

プロジェクト3にはsettings.gradleまたはそれに依存するものはありませんbuild.gradle

プロジェクト2ニーズsettings.gradle

include ':Proj3' 
project(':Proj3').projectDir = new File(settingsDir, '../Proj3') 

build,gradle

dependencies { 
    compile project(':Proj3') 
} 

プロジェクト1人のニーズsettings.gradle

include ':Proj3', ':Proj2' 
project(':Proj3').projectDir = new File(settingsDir, '../Proj3') 
project(':Proj2').projectDir = new File(settingsDir, '../Proj2') 

build,gradle

dependencies { 
    compile project(':Proj2') 
} 

これが鍵です!プロジェクト1はプロジェクト2のみに依存し、プロジェクト3もその設定に含めて指定する必要があります。その後、すべて正常に動作します。

関連する問題