将项目(模块)声明为另一个项目(另一个模块)中的依赖项但失败

Declaring a project (module) as a dependecy in another project(another module) but failed

我创建了一个名为 my-root-project 的 gradle 项目,在该项目下还有另外两个 gradle 项目:sharedmy-service

在我的 IntelliJ IDE 中,我添加了 sharedmy-service 作为 my-root-project 的模块。项目结构总体如下所示:

-my-root-project

  -shared
    -build.gradle
    -settings.gradle

  -my-service
    -build.gradle
    -settings.gradle

-build.gradle
-settings.gradle
...

my-root-projectsettings.gradle 我有:

rootProject.name = 'my-root-project'
include ':shared'
include ':my-service'

my-servicebuild.gradle中,我想添加shared作为它的项目依赖:

...
dependencies {
   implementation project(':shared')
}

但我得到错误:

A problem occurred evaluating root project 'my-service'.
> Project with path ':shared' could not be found in root project 'my-service'.

然后,我尝试将 shared 也包括在 my-servicesettings.gradle 中。 (以上,我已经包含在my-root-projectsettings.gradle中了)。

然后,再次构建但出现新错误:

Could not resolve project :shared.
Required by:
    project :

Possible solution:
 - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html

我哪里错了?我想让 shared 项目成为 my-service.

中的依赖项

听起来您正在从 my-service 项目目录中 运行 执行 Gradle 命令。由于该项目包含一个 settings.gradle 文件,因此 Gradle 认为该项目是根项目。在这个“根项目”下,没有名为 shared 的子项目,所以 Gradle 抱怨你看到的错误:

A problem occurred evaluating root project 'my-service'.
> Project with path ':shared' could not be found in root project 'my-service'.

我建议更改两件事(但其中任何一个都应该让你摆脱错误):

  1. 在多项目构建中应该只有一个 settings.gradle 文件 – 在根项目中,即您的 my-root-project。如果您查看 the Gradle docs for multi-project builds,您会发现每个示例项目层次结构中只有一个 settings.gradle 文件。
  2. 我会 运行 根项目目录中的所有 Gradle 命令。如果您需要 运行 子项目中的任务,则使用任务的完整路径,例如:./gradlew :my-service:check
    您可以在 the Gradle docs.
  3. 中找到有关在多项目构建中执行任务的更多信息