gradle - Gradle Multiproject不会将项目添加到类路径

标签 gradle build.gradle

我有一些项目依赖于其他项目。我还有一个项目,该项目依赖于两个项目,每个项目都依赖于同一项目。像这样:

-Project A
 * Project 1
  ** Project C
 * Project 2
  ** Project C

工作空间的结构是这样的:
-ProjectA
-ProjectC
-Project1
-Project2

所有项目都处于同一级别。

所以在我的项目A的settings.gradle中,我有:
include ':Project1',':Project1:ProjectC',[...]
project(':Project1') = new File('../Project1')
project(':Project2') = new File('../Project2')
project(':Project1:ProjectC') = new File('../ProjectC')
project(':Project2:ProjectC') = new File('../ProjectC')

在build.gradle中,我这样做:
dependencies{ compile project('Project1'),project('Project2')

问题在于它没有正确地添加到类路径中。我认为由于Project1和Project2都依赖于ProjectC,因此以某种方式将其覆盖。有任何想法吗?

谢谢。

编辑

这是依赖关系树:
Root project 'ProjectA'
+--- Project ':ProjectB'
|    \--- Project ':ProjectB:Project1'
|         +--- Project ':ProjectB:Project1:Project2'
|         \--- Project ':ProjectB:Project1:Project3'
\--- Project ':ProjectC'
     \--- Project ':ProjectC:Project1'
          +--- Project ':ProjectC:Project1:Project2'
          \--- Project ':ProjectC:Project1:Project3'

最佳答案

对于如下所示的工作空间:

rootFolder
|
|- build.gradle 
|- settings.gradle 
|
|- ProjectA
|  |-build.gradle
|
|- Project1
|  |-build.gradle
|
|- Project2
|  |-build.gradle
|
|- ProjectC
   |-build.gradle

您的settings.gradle应该看起来像这样(与子项目的依赖关系无关):
include ':ProjectA',':Project1',':Project2',':ProjectC',

您只是在告诉根项目有4个子项目及其位置。而已。

现在,依赖关系在每个子项目的build.gradle文件中进行处理。对于如下所示的依赖关系:
ProjectA
|-Project1
|  |-ProjectC
|
|-Project2
   |-ProjectC  

ProjectA的build.gradle:
dependencies{
    compile project(':Project1')
    compile project(':Project2')
}

Project1的build.gradle:
dependencies{
    compile project(':ProjectC')
}

Project2的build.gradle:
dependencies{
    compile project(':ProjectC')
}

关于gradle - Gradle Multiproject不会将项目添加到类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37055619/

相关文章:

android - 无法修复 "Plugin with id ' 找不到 com.android.application'

Gradle 6.0 打破了源集依赖

java - 我们如何在远程 jboss 8.2 wildfly 服务器中部署ear文件?

android - 任务 ':app:dexDebug'的Android Studio执行失败错误代码:1

java - 奇怪的gradle错误android studio

android - 带有错误 :Cause: tried to access method 的 Gradle 构建

gradle - 为什么当我对 gradle 项目使用 github actions CI 时,我会遇到 "./gradlew: Permission denied"错误?

gradle - Gradle 脚本是用 Groovy 编写的吗?

gradle - 如何为所有源集在Gradle中创建通用流程资源

android - 将 apk 上传到商店会收到警告消息