2

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

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

repositories {
    mavenCentral()
    mavenLocal()
}

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

但是,当我右键单击并在项目 B 或 C 上选择 Gradle->Refresh Gradle Project 时,它表明它无法解析 projectA 依赖项。

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

4

1 回答 1

1

您已使用 GAV (group-artifact-version) 添加了一个依赖项:com.example:projectA:1.0

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

你有两个出路:

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

  2. 将依赖项声明为 Project 依赖项,并将您的项目保留为同一父项目的子项目。您将依赖项声明为compile project(':projectA')

后者可能更容易使用。

顺便说一句,Buildship 本身可能与此问题无关,而是使用 Gradle 或 Maven 等依赖跟踪构建系统的一般问题。我记得看到一些关于 Gradle 如何在 3.0 及更高版本中更好地解决此问题的参考资料,但我目前似乎找不到链接。

于 2016-09-27T15:36:51.170 回答