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

时间:2016-02-24 15:54:30

标签: java gradle dependencies build.gradle project-structure

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

这是我的结构:

  1. 工作区:
    • 项目A
      • projectA1
        • ...
        • 在这里我希望能够访问 B1.java
        • 的build.gradle
      • projectA2
        • ...
        • 的build.gradle
    • 项目B
      • projectB1
        • B1.java
        • ...
        • 的build.gradle
      • projectB2
        • ...
        • 的build.gradle
      • 的build.gradle
  2. 我试图阅读gradle文档,但对我来说并不清楚。任何帮助赞赏。谢谢!

3 个答案:

答案 0 :(得分:4)

你应该有这样的结构:

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)在build.gradle模块的projectA1中添加依赖项

dependencies {
    compile project(':projectB1')
}

答案 1 :(得分:3)

除非项目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 here中组织多项目构建。

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

project(':B1')

所以,在A1的build.gradle中添加B1作为A1的依赖:

compile project('B1')

答案 2 :(得分:0)

  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')

参考: