Buildship - 将其他 Eclipse 项目作为依赖项

Buildship - Having other Eclipse projects as dependencies

我的工作区中有三个 eclipse 项目(项目 A、项目 B 和项目 C)。项目 B 和 C 依赖于项目 A。

在我的 build.gradle 文件中,我在 B 和 C 中设置了依赖项以引用 A:

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies {
    compile('com.example:projectA:1.0')
}

但是,当我右键单击并 select Gradle->刷新 Gradle 项目 B 或 C 上的项目时,它指出无法解析 projectA 依赖项。

我使用的是 Mars 4.5.2 和 Buildship 版本 1.0.20。我知道 Buildship 2.0 一旦发布将提供支持,以便它可以将其他 eclipse 项目作为依赖项引用。不过在此期间,如何将项目 A 安装到存储库中并在项目 B 和 C 中引用它?我在 Buildship Gradle 任务中没有看到项目 A 的安装选项。

您已使用 GAV(组工件版本)添加依赖项:com.example:projectA:1.0

当您使用 GAV 在 gradle 中声明依赖项时,gradle 假定它应该在它知道的所有可用 Maven 或 Ivy 存储库中查找该依赖项。我认为它无法解析 GAV 的原因是您从未将项目 A 发布到您的构建正在搜索的任何存储库。

你有两条出路:

  1. 将项目 A 的输出(jar 文件)发布到 Maven 存储库。您需要应用 Maven publishing plugin。例如,您可以使用 "gradle publishToMavenLocal".

  2. 发布到本地存储库
  3. 将依赖项声明为项目依赖项,并保留您的项目as sub-project of the same parent project。 您将依赖项声明为 compile project(':projectA')

后者可能更容易使用。

顺便说一句,Buildship 本身可能与此问题关系不大,而是使用 Gradle 或 Maven 等依赖项跟踪构建系统的普遍问题。我记得看到一些关于 Gradle 如何在 3.0 及更高版本中更好地解决这个问题的参考,但我现在似乎找不到 link。