我有一些依赖他人的项目。我还有一个项目依赖于两个项目,每个项目依赖于同一个项目。像这样:
-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'
答案 0 :(得分:1)
对于如下所示的工作区:
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')
}
答案 1 :(得分:0)
我最终做的是在类路径中更改错误的路径:
的build.gradle
eclipse{
classpath{
file{
whenMerged { classpath ->
classpath.entries.find { entry ->
entry.kind == 'src' && entry.path.contains('ProjectC')
}.each{ entry ->
entry.path=file("/ProjectC")
}
}
}
}
}
它工作正常。我仍然不知道为什么gradle没有正确地使用类路径...