2016-09-27 37 views
1

我的工作區中有三個eclipse項目(項目A,項目B和項目C)。項目B和C依賴於項目A.Buildship - 將其他Eclipse項目作爲依賴關係

在我的build.gradle文件,我已經設置了在B和C的依賴關係指:

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安裝到回購庫中並在項目B和C中引用?我沒有在Buildship Gradle Tasks中看到項目A的安裝選項。

+0

如果您使用gradle命令行,上述配置是否成功構建? './gradlew projectB:build' – Jolta

+0

不,它聲明'找不到com.example:projectA:1.0。在以下位置搜索:「地點包括本地回購。當我瀏覽本地回購文件系統時,我也找不到projectA的路徑,所以我的問題似乎是無法在本地回購站中安裝項目A.但我不確定如何使用Buildship安裝項目A. – James

+0

我認爲你的問題與Buildship無關......我會發佈一個答案。 – Jolta

回答

1

您已經使用GAV(羣件神器版)添加了相關性:com.example:projectA:1.0

當您使用GAV在gradle中聲明依賴項時,gradle會假定它應該在它所知的所有可用Maven或Ivy存儲庫中查找該依賴項。我認爲它無法解決GAV的原因是您從未將項目A發佈到構建搜索的任何存儲庫。

你有兩條出路:

  1. 發佈項目A的輸出(JAR文件)到一個Maven回購。您需要申請Maven publishing plugin。例如,您可以使用「gradle publishToMavenLocal」發佈到您的本地回購站。

  2. 聲明依賴項爲項目依賴項,並保留項目as sub-project of the same parent project。 你會聲明依賴作爲compile project(':projectA')

後者可能是一個更容易的工作。

順便說一句,建設本身可能與這個問題很少有關係,而是使用像Gradle或Maven這樣的依賴跟蹤構建系統的一個普遍問題。我記得在3.0和更高版本中看到了Gradle如何更好地解決這個問題的一些參考,但我目前似乎無法找到鏈接。

+1

在Gradle 3.1中,[composite builds](https://docs.gradle.org/current/userguide/composite_builds.html)是一個選項。它在Buildship 1.0.20中不受支持,但將在2.0中。在此期間,我選擇使用Maven發佈插件。一旦支持,轉換爲使用複合材料應該很容易。我現有的回購(SVN)目錄結構與Gradle標準多項目結構一起工作。 – James

+0

感謝您的指針!我會考慮使用這個,因爲項目之間的依賴關係一直是我迄今爲止對Gradle的主要抱怨。 – Jolta

相關問題