有一些 gradle - android 项目 A。它取决于几个 gradle 子项目,每个子项目位于自己的 git 存储库中,并通过 git sub 模块连接到我们的项目(我可以在我的 owr 存储库中查看它我的项目目录。)
项目层次结构是:
└─ ProjectRootDir --- projectA
├─ gradle
├─ mainProject
│ └─ subprojectA --- submoduleA
│ ├─ libs
│ ├─ src
│ ├─ settings.gradle
│ └─ build.gradle
├─ relatedProjects --- folder for submodules
│ ├─ subprojectA --- submoduleA
│ │ ├─ library
│ │ ├─ gradle
│ │ ├─ libs
│ │ └─ relatedProjects --- related projects for submoduleA
│ │ ├─ subprojectAA --- first submodule of submoduleA
│ │ │ ├─ Test
│ │ │ ├─ libs
│ │ │ ├─ src
│ │ │ ├─ settings.gradle
│ │ │ └─ build.gradle
│ │ └─ subprojectAB --- first submodule of submoduleA
│ │ ├─ libs
│ │ ├─ src
│ │ ├─ tests
│ │ ├─ settings.gradle
│ │ └─ build.gradle
│ └─ subprojectB --- submodule of submoduleB
│ ├─ demo
│ ├─ gradle
│ ├─ library
│ ├─ settings.gradle
│ └─ build.gradle
├─ settings.gradle
└─ build.gradle
mainProject build.gradle
apply plugin: 'android'
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
compile project(':relatedProjects:subprojectB:library')
compile project(':relatedProjects:subprojectA:library')
}
rootProject settings.gradle
include ':mainProject'
include ':relatedProjects:subprojectB:library'
include ':relatedProjects:subprojectA'
rootProject build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.+'
}
}
子项目设置.gradle
include ':library'
include ':relatedProjects:subprojectAA'
include ':relatedProjects:subprojectAB'
subprojectA build.gradle
apply plugin: 'android-library'
repositories {
mavenCentral()
flatDir {
name 'localRepository'
dirs 'src/main/libs'
}
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 9
targetSdkVersion 19
}
sourceSets {
instrumentTest {
assets.srcDirs = ["src/tests/assets"]
res.srcDirs = ["src/tests/res"]
resources.srcDirs = ["src/tests/src"]
java.srcDirs = ["src/tests/src"]
}
}
}
dependencies {
compile project(':relatedProjects:submoduleAA')
compile project(':relatedProjects:submoduleAB')
}
但是当我尝试构建 ./gradlew assembleDebug
我每次都收到错误
FAILURE: Build failed with an exception.
* Where:
Build file '.../ProjectRootDir/relatedProjects/submoduleA/library/build.gradle' line: 38
* What went wrong:
A problem occurred evaluating project ':relatedProjects:submoduleA:library'.
> Project with path ':relatedProjects:submoduleAA' could not be found in project ':relatedProjects:submoduleA:library'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
第 38 行是
compile project(':relatedProjects:submoduleAA')
但是当我为 submoduleA 项目运行 ./gradlew assembleDebug 时,一切正常。
请大家帮帮我。我如何将一个项目与另一个项目中的子项目一起用作子项目(子模块)?
最佳答案
Gradle 构建只能有一个 settings.gradle
,并且您只能在属于同一构建的项目之间具有项目依赖关系。跨越构建边界,您通常会通过(本地或远程)Maven 或 Ivy 存储库交换二进制工件(外部依赖项)。当然,两个settings.gradle
可能包括一些相同的项目。 IntelliJ 还具有将另一个 Gradle 构建添加到同一个 IntelliJ 项目的功能,也许这个功能也存在于 Android Studio 中。
关于android - 我如何将一个项目与另一个项目中的子项目一起用作带有 gradle 的子项目(子模块)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21206968/