关于gradle:Buildship-将其他Eclipse项目作为依赖项

 2021-04-27 

Buildship - Having other Eclipse projects as dependecies

我的工作区中有三个月食项目(Project A,Project B和Project C)。项目B和C取决于项目A。

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

1
2
3
4
5
6
7
8
repositories {
    mavenCentral()
    mavenLocal()
}

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

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

我正在使用Mars 4.5.2和Buildship版本1.0.20。我了解Buildship 2.0一旦发布将提供支持,以便它可以将其他Eclipse项目称为依赖项。在过渡期间,如何将项目A安装到存储库中,并在项目B和C中引用它?我在Buildship Gradle Tasks中看不到项目A的安装选项。


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

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

您有两种解决方法:

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

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

  • 使用后者可能要容易得多。

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