我有一个多模块项目,其目录结构如下:
proj
|-modA
|-modB
|-modMain
\-modSysTest
依赖项是:
modB -> modA
modMain -> modB
modMain -> modA
modSysTest -> modMain
我们目前使用 Ant 作为我们的构建系统。每个模块都有一个 build.xml。有一个 master.xml 运行多模块构建,它位于 modMain 中。
我正在研究将我们的项目切换为使用 gradle。如果我将 build.gradle 和 settings.gradle 放在一个新的同级目录中并使用 includeFlat 设置依赖模块,我可以获得一个多模块构建工作。
我尝试将 gradle 文件移动到 modMain 中,这是我们系统的主要组件以及构建整个系统的顶级构建脚本 (master.xml) 的主目录,但我无法让构建以这种方式工作.目前,我的主要绊脚石是尝试将 modSysTest 配置为依赖于 modMain 中的 modMain。
这是来自 modMain 的 settings.gradle:
includeFlat 'modA', 'modB', 'modSysTest'
这是来自 modMain 的 build.gradle 文件:
allprojects {
apply plugin: 'java'
repositories {
mavenCentral()
};
dependencies {
testCompile 'junit:junit:4.11'
}
}
project(':modB') {
dependencies {
compile project(':modA')
}
}
project(':modSysTest') {
dependencies {
compile project(':modMain')
}
}
dependencies {
compile project(':modA'), project(':modB')
}
使用此配置时,我收到错误:
A problem occurred evaluating root project 'modMain'.
> Project with path ':modMain' could not be found in project ':modSysTest'.
我不确定如何将 modMain 指定为 modSysTest 的依赖项。
最佳答案
根项目的项目路径为:
,而不是 :modMain
.在根项目中包含代码不是很习惯(但可能)。我不明白如何把 build.gradle
和 settings.gradle
进入 modMain
的同级目录会给出不同的结果(除非您还更改了 settings.gradle
的内容)。请注意,使用这样的设置,Gradle 将找不到 settings.gradle
除非您从 modMain
开始构建目录或使用 -c
传递设置文件的位置.
关于gradle - 在 settings.gradle 不是最高级别依赖项的平面多模块项目中使用 gradle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20527305/