2012-10-20 88 views
5

我注意到許多項目把org.jdt.core jar放在lib folder中,因爲它在maven倉庫中不可用。 sbt,我正在使用的構建工具可以直接從URL中獲取依賴關係。但是,我在eclipse下載頁面找不到任何直接鏈接到jar的鏈接。我能找到的關閉是一個鏈接到包含許多jar文件的整個jdt zip。我不相信sbt可以從zip依賴關係中提取jar。 是否有直接鏈接或其他解決方法?是否有直接鏈接到eclipse.jdt.core jar?

回答

14

取決於您想要的版本是否已存在存儲庫中。

對於org.eclipse.jdt.core:

第谷項目似乎部署到中央的org.eclipse.jdt.core一些版本。參見:

http://central.maven.org/maven2/org/eclipse/tycho/org.eclipse.jdt.core/ 

我發現使用search.maven.org。其中一個可能足以滿足您的需求。但他們似乎沒有「官方」二進制文件,只是重建了它們。

(請注意,還有一個maven.eclipse.org,這可能是一些假象有用的,但如果不似乎有什麼適合你的特殊問題。)

對於一般情況下:

一般來說,儘管在maven倉庫中找不到所有的eclipse artifacts。所以,如果你在maven repo中找不到你想要的,你需要自己在Eclipse p2倉庫中找到它。比方說,你想要的org.eclipse.jdt.core爲Eclipse 3.8.1 ...

Eclipse Project Update Sites wiki頁面說,對3.8.x更新站點是

http://download.eclipse.org/eclipse/updates/3.8 

這實際上是對3.8「複合」 P2存儲庫,3.8.1 ,...所以接下來我們需要找出3.8.1版本庫的名稱。以下取含compositeArtifacts.xml一個jar文件,該文件列出了子庫,併爲裏grep 3.8.1

curl -s http://download.eclipse.org/eclipse/updates/3.8/compositeArtifacts.jar | \ 
    gunzip -c | \ 
    grep '3\.8\.1' 

結果?

<child location='R-3.8.1-201209141540'/> 

該位置是相對路徑。它告訴我們3.8.1存儲庫位於

http://download.eclipse.org/eclipse/updates/3.8/R-3.8.1-201209141540/ 

現在爲該存儲庫獲取工件索引。再次,在一個jar中的單個XML文件。但是這一次,它不是一個複合庫,所以我們只要求artifacts.jar

curl -s http://download.eclipse.org/eclipse/updates/3.8/R-3.8.1-201209141540/artifacts.jar | \ 
    gunzip -c | \ 
    grep org.eclipse.jdt.core[\'\"] | \ 
    sort -u 

結果:

<artifact classifier='osgi.bundle' id='org.eclipse.jdt.core' version='3.8.2.v20120814-155456'> 

(我不知道爲什麼org.eclipse.jdt.core在3.8.1有一個版本3.8開始.2,但事實就是這樣。讓我們按...)

所以,現在我們可以根據我們剛剛獲取的artifacts.xml中的<mappings>元素將網址拼接在一起。將'plugins /'添加到存儲庫路徑;該版本添加到插件的名稱,然後我們就可以把它拿來:

curl -Os http://download.eclipse.org/eclipse/updates/3.8/R-3.8.1-201209141540/plugins/org.eclipse.jdt.core_3.8.2.v20120814-155456.jar 

如果你發現自己需要的不僅僅是一兩個罐子,你可能會考慮使用Tycho,或Eclipse p2 Ant tasks解決工件越在運行你的sbt構建之前需要進入一個lib文件夾。

+0

炸藥答案,謝謝。 tycho maven回購對我來說已經足夠了,因爲它有3.8.x,我找不到,剩下的就是結冰! –

+0

這是一個很好的答案。謝謝! – awied