我有3个独立的Gradle项目-x依赖于y依赖于z。
x/设置.gradle
include ':y'
project(':y').projectDir = new File('../y')
x/构建.gradle
apply plugin: 'java'
y/设置.分级
include ':z'
project(':z').projectDir = new File('../z')
y/构建.gradle
apply plugin: 'java'
dependencies {
compile project(':z')
}
当我在x目录中运行gradlew build
时,出现错误
* Where:
Build file 'C:\Temp\idea\y\build.gradle' line: 4
* What went wrong:
A problem occurred evaluating project ':y'.
Project with path ':z' could not be found in project ':y'.
但是在y目录下运行gradlew build
是成功的。
我应该如何配置x和y以避免y的依赖项影响x?
2条答案
按热度按时间lnlaulya1#
这不是Gradle中多项目构建的工作方式。
简而言之,您不能有多个
settings.gradle
,只能有一个在父项目的根。在该设置文件中,您将定义不同的模块:
请注意,上面隐含地假设3个项目位于名为
x
、y
和Z
的文件夹中,作为settings.gradle
文件的同级。Gradle Package 器也应该在该根级别定义,而不是在其他任何地方。
在不更改每个项目中的
build.gradle
文件的情况下,调用该根文件夹中的./gradlew build
应该会产生您所期望的结果。请查看Gradle documentation on multi project builds以了解更多详细信息。
ddarikpa2#
我有相同的项目依赖项设置
x
-〉y
-〉z
,并且必须使用以下build.gradle
和settings.gradle
来使每个项目独立构建并运行自己的测试:z
build.gradle
没有内部项目依赖项或settings.gradle
y
build.gradle
具有y
settings.gradle
具有x
build.gradle
具有x
settings.gradle
具有到目前为止,这是唯一的方法,我可以让项目
y
独立构建并运行测试,然后让项目x
独立构建并运行测试。否则,如果没有x
settings.gradle
中的z
,我将得到:并且在
x
build.gradle
中没有z
,得到:和
This和this问题对我有帮助,因为我还添加了
x
和y
build.gradle
文件