gradle - 项目作为依赖项

问题描述 投票:0回答:3

我的Java项目结构如下:

- root-directory (has no .gradle file)
    - project_1
        - build.gradle
        - settings.gradle
    - project_2
        - build.gradle
        - settings.gradle
    - project_3
        - build.gradle
        - settings.gradle

project_2
依赖于
project_1
,这种依赖关系定义如下:

- project_2/build.gradle
  implementation(project(":project_1"))
- project_2/settings.gradle
  include(":project_1")
  project(":project_1").projectDir = new File("../project_1")

并且,

project_3
依赖于
project_2
,这种依赖关系定义如下:

- project_3/build.gradle
  implementation(project(":project_2"))
- project_3/settings.gradle
  include(":project_2")
  project(":project_2").projectDir = new File("../project_2")

现在,当我通过在

project_3
目录中运行
>> ./gradlew build
终端命令来构建
./project_3/
时,会出现以下错误:

A problem occurred evaluating project ':project_2'.
> Project with path ':project_1' could not be found in project ':project_2'.

我希望能够从它自己的目录构建每个项目。我该如何解决这个问题?

更新:我尝试通过添加以下内容将

root-directory
转换为项目根目录:

- root-directory/settings.gradle
  rootProject.name = "root"
  include(":project_1", ":project_2", ":project_3")
- root-directory/build.gradle
  // Nothing in this file

并从所有子项目的

project(":project_#").projectDir = new File("../project_#")
文件中删除了
settings.gradle
行。但即使在此之后,每个单独项目目录中的构建命令也不起作用。

java gradle
3个回答
5
投票

不要在模块级别

include(":project_1/2/3")
中定义
build gradle
,而是使用根项目的
settings.gradle
将它们定义为模块:

rootProject.name = "SomeApp"
include ":project_1", ":project_2", ":project_3"

然后就可以在模块级别引用这些子项目了

build.gradle
:

dependencies {
     api project(':project_1')
     implementation project(':project_2')
}

0
投票

项目依赖项需要项目路径,而不仅仅是项目名称:

dependencies {
    implementation project(":project_1")
}

注意项目名称前的

:
:它将项目名称转换为相对于根项目的项目路径。


0
投票

就我而言,我的子项目不是java项目。我必须这样做

allprojects {
   apply plugin: 'java'
}

在 build.gradle 中

© www.soinside.com 2019 - 2024. All rights reserved.