如何使用 gradle 正确添加对另一个项目的依赖?

How to add a dependency to another project properly using gradle?

你好,我是 gradle 的新手,这让我有点困惑。我应该如何在 gradle 配置中添加依赖项以访问 projectA1 中的 B1.java?项目 B 是 gradle 个项目,而项目 A 只是一个包含另一个 gradle 个项目的文件夹。

这是我的结构:

  1. 工作区:
    • 项目A
      • 项目A1
        • ...
        • 这里我想访问B1.java
        • build.gradle
      • 项目A2
        • ...
        • build.gradle
    • 项目B
      • 项目B1
        • B1.java
        • ...
        • build.gradle
      • 项目B2
        • ...
        • build.gradle
      • build.gradle

我试图阅读 gradle 文档,但我并不清楚。任何帮助表示赞赏。谢谢!

除非项目 A1 和 B1 位于同一个源存储库中并且一起签出和签入,否则您确实应该将项目 B1 作为外部依赖项。

在项目 A1 中 build.gradle:

dependencies{
    compile 'projectB1group:projectB1module:projectB1version'
}

当然,要实现这一点,您必须首先将 B1 二进制文件发布到可从项目 A1 访问的存储库。这可以是外部 nexus/artifactory 类型的 maven 存储库,但也可以是本地 maven .m2 缓存,甚至是普通的旧文件系统。对于 Maven 发布,请参阅 maven 或“maven-publish”插件。


如果两个项目都在同一个源代码库中,您应该将 ProjectA 和 ProjectB 组织为根 "container" 项目下的子项目。根项目不需要有自己的源代码。

在 gradle here 中阅读有关组织多项目构建的信息。

如果根项目有一个包含项目 B1 的包含行的 settings.gradle,您可以像这样引用根项目下的任何项目:

project(':B1')

所以,要将 B1 添加为 A1 的依赖项,在 A1 的 build.gradle:

compile project('B1')

你应该有这样的结构:

ProjectA
|--projectA1
|----build.gradle
|--projectA2
|----build.gradle
|--settings.gradle
|--build.gradle

ProjectB
|--projectB1
|----build.gradle
|--projectB2
|----build.gradle
|--settings.gradle
|--build.gradle

您可以 link 项目中的外部模块。

1) 在您的项目中 projectA/settings.gradle

include ':projectA1',':projectA2',':projectB1' 
project(':projectB1').projectDir = new File("/workspace/projectB/projectB1")

2) 在projectA1模块build.gradle中添加依赖

dependencies {
    compile project(':projectB1')
}
  1. 在根路径中编辑setting.gradle并包含您的子项目,这样子项目就可以相互看到并相互依赖了。
root
 |-- build.gradle << very simple bulid.grade , no special thing.
 |-- setting.gradle <<
rootProject.name = 'root'

file("${rootDir}/ProjectA").eachDirMatch(~/.*/) {
    include "ProjectA:${it.name}"
}

file("${rootDir}/ProjectB").eachDirMatch(~/.*/) {
    include "ProjectB:${it.name}"
}
  1. build.gradle 在项目中
root
 |-- ProjectA
        |-- projectA1
            |-- build.gradle  <<
implementation project(':ProjectB:projectB1')

参考: