繁体   English   中英

如何使用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
        • 构建.gradle
      • 项目A2
        • ...
        • 构建.gradle
    • 项目B
      • 项目B1
        • B1.java
        • ...
        • 构建.gradle
      • 项目B2
        • ...
        • 构建.gradle
      • 构建.gradle

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

你应该有一个这样的结构:

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

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

您可以在项目中链接外部模块。

1) 在你的项目projectA/settings.gradle

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

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

dependencies {
    compile project(':projectB1')
}

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

在项目 A1 build.gradle 中:

dependencies{
    compile 'projectB1group:projectB1module:projectB1version'
}

当然,要使其工作,您必须首先将 B1 二进制文件发布到可从 Project A1 访问的存储库。 这可以是外部 nexus/artifactory 类型的 maven 存储库,也可以是本地 maven .m2 缓存,甚至是普通的旧文件系统。 对于 maven 发布,请参阅maven或 'maven-publish` 插件。


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

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

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

project(':B1')

因此,要将 B1 添加为 A1 的依赖项,请在 A1 的 build.gradle 中:

compile project('B1')
  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')

参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM