我的工作区中有三个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->刷新Gradle项目时,它表示它无法解析projectA依赖项。
我正在使用Mars 4.5.2和Buildship版本1.0.20。据我所知,Buildship 2.0一旦发布将提供支持,以便它可以将其他eclipse项目称为依赖项。在过渡期间,如何将项目A安装到仓库并在项目B和C中引用它?我没有在Buildship Gradle Tasks中看到项目A的安装选项。
答案 0 :(得分:1)
您已使用GAV(群组工件版本)添加了依赖关系:com.example:projectA:1.0
。
当您使用GAV在gradle中声明依赖项时,gradle会假定它应该在它知道的所有可用Maven或Ivy存储库中查找该依赖项。我认为它无法解决GAV的原因是你从未将项目A发布到你的构建搜索的任何存储库。
你有两种方法:
将项目A的输出(jar文件)发布到Maven仓库。您需要应用Maven publishing plugin。例如,您可以使用" gradle publishToMavenLocal"发布到您的本地仓库。
将依赖项声明为Project依赖项,并保留项目as sub-project of the same parent project。
您将依赖关系声明为compile project(':projectA')
后者可能更容易使用。
BTW,Buildship本身可能与此问题关系不大,而是使用依赖跟踪构建系统(如Gradle或Maven)的一般问题。我记得看过一些关于Gradle如何在3.0以上更好地解决这个问题的参考,但我现在似乎无法找到这个链接。