在使用Gradle的Android Studio中我ProjectA
依赖于ProjectB
但Project B
依赖于Project C
和Project D
这样......
Project A
.. Project B
.. Project C
.. Project D
使用当前的Gradle脚本,我得到以下错误
Error:(22, 0) Project with path ':ProjectC:app' could not be found in project ':ProjectB:app'.
文件夹结构
.\workspace
\ProjectA
\app
\build
\gradle
\.gradle
\.idea
\ProjectB (same as A)
\ProjectC (same as A)
\ProjectD (same as A)`
项目A settings.gradle
include ':app', ':ProjectB:app'
project (':ProjectB:app').projectDir = new File(settingsDir, '../ProjectB/app')
项目构建build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
项目A模块build.gradle
android {
compileSdkVersion 19
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.example.movetogradle"
minSdkVersion 15
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile 'com.android.support:support-v4:19.1.0'
compile project(path: ':ProjectB:app')
}
项目B使用上述相同的方法知道它的依赖性C和D.
我对整个gradle场景都很陌生。显然在Eclipse(ANT)中,你只能说ProjectB是一个库。我们希望将它们保留为单独的项目而不是模块,因为当ProjectB中的代码更改时,所有使用B的项目都会使用它。
如果我添加对ProjectA
和ProjectC
的引用,我可以ProjectD
构建ProjectB
。
如何让ProjectA
依赖ProjectB
而不必在ProjectB
中声明所有ProjectA
的依赖关系?
答案 0 :(得分:0)
当Gradle多项目构建中包含另一个项目时,我非常确定不会为该项目读取settings.gradle
文件。 (见the Gradle documentation, chapter 56.2)
在多项目构建中,您应该至少包含根settings.gradle
文件中的所有必需项目,因此在这种情况下,ProjectA的settings.gradle
我认为需要包含项目C和D命令构建工作。 A不需要声明任何更多依赖项,但Gradle需要知道项目才能构建它们。