如何在Eclipse工作区中解决从一个gradle项目到另一个gradle项目的依赖关系?

时间:2015-02-11 20:07:13

标签: java eclipse gradle

我的eclipse工作区里有两个gradle项目。我们称他们为“A”和“B”。 “A”取决于“B”。项目“A”在其build.gradle文件中声明了对“B”的依赖,如下所示:

 dependencies {
    compile 'some-group:B:1.0.0'
    ...
}

由于我将在两个项目中进行修改,如果gradle可以将“B”的依赖关系解析为eclipse项目中的二进制文件(而不是从某个存储库下载B.jar),那将是很好的。 / p>

幸运的是我发现Eclipse / STS中有这样的功能(根据this问题)。我通过选中“将jar重新映射到Gradle项目”(在Eclipse:Window - > Gradle首选项中)来启用此功能。做完Gradle后 - >全部刷新(在项目“A”中),我在项目“A”类路径中有这个:

  • C:\eclipse-workspace\B\bin(项目“B”的二进制文件所在的路径)。
  • 项目B的所有传递依赖项。
  • 在项目“A”中声明的所有依赖项(及其传递依赖项)。

到目前为止一直很好:)

但过了一会儿,我意识到我在类路径中得到的结果比我预期的要多一些。 我也在项目“A”类路径中得到了这个:

  • “B / src / test / java”的二进制文件
  • 项目“B”的'testCompile'依赖项。

从项目“A”访问项目“B”的“test”代码和testCimpile依赖项是没有意义的。无论如何我可以避免这个吗?

我试图在项目“B”中为src/main/*src/test/*设置不同的输出文件夹,但是这两个文件夹都会添加到项目“A”的类路径中。

我以前一直在使用Maven和Eclipse,并且在同一个Eclipse工作区中引用依赖项非常有效。

1 个答案:

答案 0 :(得分:0)

多项目构建是您的答案。

最简单的方法是建立一个像这样的目录结构:

root
    |-> project A
    \-> project B

在root中你将有一个build.gradle文件和一个settings.gradle文件,在settings.gradle中列出项目A和项目B.任何常见的配置都可以在root build.gradle中,然后在项目B中您可以拥有以下依赖项:

dependencies {
    compile project(':project A')
}

然后,如果您更改项目A并构建项目B,项目A将重新编译,否则gradle将使用以前编译的版本。

请参阅https://gradle.org/docs/current/userguide/multi_project_builds.html