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

Pet*_*rs_ 10 java dependencies project-structure gradle build.gradle

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

这是我的结构:

  1. 工作空间:
    • 项目A
      • projectA1
        • ...
        • 在这里我想访问B1.java
        • build.gradle
      • projectA2
        • ...
        • build.gradle
    • 项目B
      • 项目B1
        • B1.java
        • ...
        • build.gradle
      • projectB2
        • ...
        • build.gradle
      • build.gradle

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

Gab*_*tti 7

您应该具有以下结构:

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

ProjectB
|--projectB1
|----build.gradle
|--projectB2
|----build.gradle
|--settings.gradle
|--build.gradle
Run Code Online (Sandbox Code Playgroud)

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

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

include ':projectA1',':projectA2',':projectB1' 
project(':projectB1').projectDir = new File("/workspace/projectB/projectB1")
Run Code Online (Sandbox Code Playgroud)

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

dependencies {
    compile project(':projectB1')
}
Run Code Online (Sandbox Code Playgroud)

  • 正是我所需要的!然而,为了完成这项工作,我必须改变两件事:“依赖项{}”的“implement”而不是“compile”(由Android Studio建议)和“settings.gradle”中的“.setProjectDir()”。 (3认同)

RaG*_*aGe 5

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

在项目 A1 build.gradle 中:

dependencies{
    compile 'projectB1group:projectB1module:projectB1version'
}
Run Code Online (Sandbox Code Playgroud)

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


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

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

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

project(':B1')
Run Code Online (Sandbox Code Playgroud)

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

compile project('B1')
Run Code Online (Sandbox Code Playgroud)