我有一个多模块项目,其目录结构如下:
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中,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的依赖项。
答案 0 :(得分:1)
根项目的项目路径为:
,而不是:modMain
。在根项目中使用代码并不是非常习惯(但可能)。我没有看到如何将build.gradle
和settings.gradle
放入modMain
的同级目录中会产生不同的结果(除非您还更改了settings.gradle
的内容)。请注意,使用此类设置时,除非您从settings.gradle
目录启动构建或使用modMain
传递设置文件的位置,否则Gradle将找不到-c
。