2012-12-08 106 views
2

當試圖建立這個項目:Buildr與失敗「無法下載螞蟻」

project_layout = Layout.new 
project_layout[:source,:main,:java] = 'src' 
project_layout[:source,:test,:java] = 'test' 

define 'hausaufgaben', :layout => project_layout do 
    project.version = '1.0' 
    package :jar 
end 

我得到這個錯誤:

RuntimeError : Unable to download org.apache.ant:ant:jar:1.8.3. No remote repositories defined. 

從這個消息,我推測,buildr使用Ant內部(奇怪的是,我以爲它使用Rake來構建)。 Quickstart沒有提到這一點。更令人討厭的是,我已經有了ant(1.8.2而不是1.8.3,但不應該產生如此巨大的差異),並且奇怪的是,只要buildr沒有找到任何java文件,就沒有抱怨(通過將佈局保留爲默認值進行測試)。

現在回到實際問題:我的是否有添加一個存儲庫,其中buildr可以找到螞蟻,否則我可以這樣做嗎?

備案:我安裝了搭建程序jruby -S gem install buildr並運行它與jruby -S buildr package

回答

2

Buildr使用Rake來完成任務依賴性評估和執行。但是,Rake並不瞭解如何專門構建Java項目。 Buildr使用ant任務來實現一些自己的任務,而不是重新編寫它在ruby中支持的每個任務。 (一個我能想到的就是運行JUnit測試;我確信還有其他測試。)所以,Buildr需要Ant。

您可以添加適當的遠程存儲庫,也可以確保正確版本的ant jar位於每臺將使用構建文件的計算機上的m2緩存中。對於錯誤消息中的工件,預期的路徑將爲$HOME/.m2/repository/org/apache/ant/ant/1.8.3/ant-1.8.3.jar

請注意,ant可能不是buildr將嘗試下載的唯一依賴項。如果您不想定義遠程存儲庫,則必須爲每個依賴項執行此手動解析。

(請注意,如果你運行在一個目錄buildr沒有構建文件,它會提供給您生成一個。它產生一個具有適當的遠程倉庫設置。)

+0

謝謝,我不知道創建buildfile的事情。是的,期待事情進入緩存真的不是我的選擇(我正在寫的這個人誰不知道甚至存在maven的人)。 – Cubic

5

至於瑞德idicated,Buildr在封面下使用Ant來實現它的一些任務,並在需要時嘗試下載所需的庫。

我通常在構建文件中註冊一個遠程存儲庫,以便構建知道從哪裏下載庫,如果它尚未緩存在本地。因此,請嘗試將以下內容添加到您的構建的頂部。

repositories.remote << 'http://repo1.maven.org/maven2'