web-dev-qa-db-ja.com

Gradleはマルチモジュールプロジェクトからネストされたサブプロジェクトを別のサブプロジェクトの依存関係として追加します

複雑ですが興味深い状況です。これは私のフォルダ構造のツリー図です:

root
|___ settings.gradle
|___ p1
|___ p2  // depends on p3/sp1
|___ p3
|____|___sp1
|____|___sp2

それで状況が説明できるといいのですが。

sp1の依存関係としてp2を追加するにはどうすればよいですか?

これまでのところ、私のルートsetting.gradleには、

rootProject.name = root
include 'p1'
include 'p2'
include 'p3'

p2 build.gradleには、

dependencies {
    compile project (':p3:sp1')
}

ただし、これを行ってもp2の依存関係は解決されません。未定義の定義に関するエラーが引き続き表示されます。

どうすれば修正できますか?

余談ですが、sp1が他の依存関係をどのように解決するかを考えます。sp2に依存している場合と同様に、p3

9
smac89

プロジェクトを想定しているsp1およびsp2はプロジェクトのsubprojectsp3、やりたい場合:

dependencies {
    compile project(':p3:sp1')
}

次に、settings.gradleから:

rootProject.name = root

include ':p1'
include ':p2'
include ':p3'    // Keep this if this folder contains a build.gradle
include ':p3:sp1'
include ':p3:sp2'
14
Jared Burrows

あなたが見ているかもしれない人のための答えを追加するために、あなたのsettings.gradleに

include ':p1',':p2',':p3:sp1',':p3:sp2'

sp1がsp2に依存する場合

次に、sp1のgradleへの依存関係を追加します

dependency {
   compile project(":p3:sp2")
}
4
andylamax