Gradle Local Project Dependency

时间:2016-04-07 14:22:46

标签: java gradle

我在同一目录中有2个Gradle项目。目录结构如下:

ParentDirectory\
    GradleProjectA\
        build.gradle
    GradleProjectB\
        settings.gradle
        build.gradle

我想将GradleProjectA添加为GradleProjectB的依赖项。在settings.gradle的{​​{1}}中,我尝试添加GradleProjectB,然后添加到include 'GradleProjectA'build.gradle,但这不起作用。

非常感谢任何帮助。感谢。

5 个答案:

答案 0 :(得分:4)

我做这样的事情的方式如下:

GradleProjectB/settings.gradle

include ':GradleProjectA'
project(':GradleProjectA').projectDir = new File('../GradleProjectA')

GradleProjectB/build.gradle

compile project(":GradleProjectA")

答案 1 :(得分:2)

在最新版本的Gradle中,您可以使用Composite Builds,如下所示:

GradleProjectB的settings.gradle 中,添加以下行:

includeBuild "../GradleProjectA"

它将自动处理依赖项冲突以及所有此类问题。

答案 2 :(得分:1)

settings.gradle文件需要位于指定两者的父目录中。

请尝试以下格式:

ParentDirectory\ 
    build.gradle
    settings.gradle <-- include 'GradleProjectA', 'GradleProjectB'
    GradleProjectA/
        build.gradle
    GradleProjectB/
        build.gradle

编辑: 好的,如果您的父目录不是构建目录,那么您可以执行以下操作:

在您的gradle项目b settings.gradle文件中尝试以下操作:

includeFlat("GradleProjectA") // Include the project
你的b build.gradle中的

compile project(":GradleProjectA")

includeFlat reference

答案 3 :(得分:0)

如果GradleProjectAGradleProjectB是一个多项目Gradle版本的一部分,那么您可能需要settings.gradle中的ParentDirectory,其中包含A和B.你使用settings.gradle是不正确的。也许您应该在用户指南中重新阅读有关多项目gradle构建的部分。

如果这两个项目是个别项目,但您仍然希望依赖于B中的A,那么您可能更愿意构建A,将其发布到某个存储库(可能是mavenLocal存储库),然后依赖项目B中构建的工件。

答案 4 :(得分:0)

以下应该可以解决问题:

root
+-- projectA
|   +-- build.gradle
|       => dependencies { compile project(':common') }
|   +-- settings.gradle 
|       => include ':common'
|          project(':common').projectDir = new File('../common')
+-- projectB
|   => same as projectA
+-- common
    +-- build.gradle
        => regular build, probably with a "jar" section