Gradle项目依赖关系

5w9g7ksd  于 2022-11-14  发布在  其他
关注(0)|答案(2)|浏览(222)

我有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是成功的。
我应该如何配置xy以避免y的依赖项影响x

lnlaulya

lnlaulya1#

这不是Gradle中多项目构建的工作方式。
简而言之,您不能有多个settings.gradle,只能有一个在父项目的根。
在该设置文件中,您将定义不同的模块:

include ':x', ':y', ':z'

请注意,上面隐含地假设3个项目位于名为xyZ的文件夹中,作为settings.gradle文件的同级。
Gradle Package 器也应该在该根级别定义,而不是在其他任何地方。
在不更改每个项目中的build.gradle文件的情况下,调用该根文件夹中的./gradlew build应该会产生您所期望的结果。
请查看Gradle documentation on multi project builds以了解更多详细信息。

ddarikpa

ddarikpa2#

我有相同的项目依赖项设置x-〉y-〉z,并且必须使用以下build.gradlesettings.gradle来使每个项目独立构建并运行自己的测试:
zbuild.gradle没有内部项目依赖项或settings.gradle
ybuild.gradle具有

dependencies {
  implementation project(':z')

ysettings.gradle具有

include ':z'
project(':z').projectDir = new File(settingsDir, '../z')

xbuild.gradle具有

dependencies {
  implementation project(':y')
  implementation project(':z')

xsettings.gradle具有

include ':z'
project(':z').projectDir = new File(settingsDir, '../z')
include ':y'
project(':y').projectDir = new File(settingsDir, '../y')

到目前为止,这是唯一的方法,我可以让项目y独立构建并运行测试,然后让项目x独立构建并运行测试。否则,如果没有xsettings.gradle中的z,我将得到:

Project with path ':z' could not be found in root project 'x'.

并且在xbuild.gradle中没有z,得到:

package does not exist

cannot find symbol

Thisthis问题对我有帮助,因为我还添加了xybuild.gradle文件

bootJar {
  enabled = false
}

jar {
  enabled = true
}

相关问题