2012-06-12 30 views
4

我正在尋找使用Maven訪問自定義非Java工件存儲庫的方法。我們有一個工件存儲庫(或多或少)包含Windows共享上的一堆zip文件(包含本機可執行文件,頭文件等)。這些可以通過Ruby腳本訪問,它可以根據需要實現/解壓這些工件。還有一些工件沒有存儲在磁盤上,但是從其他地方實現(例如Subversion)。從Maven訪問自定義(非Java)工件存儲庫

我希望能夠將這些存儲庫集成到Maven構建中,以便(例如)集成測試可以使用來自本機構件的.exe和.dll文件。我看過Nexus和Artifactory,但很難判斷它們會適合這種情況。圍繞「自定義佈局」的大多數文檔似乎都假設我們正在談論某種Java工件。

+0

您結婚的Maven? Apache ivy有一個獨立的java客戶端,只是執行依賴管理。常春藤也支持的不僅僅是Maven倉庫 –

+0

在這一點上,更改爲除Maven之外的其他內容不是替代方案,不。 – JesperE

回答

1

這裏最簡單的解決方案是通過HTTP公開您的存儲庫,以便它恰好具有標準的Maven佈局和元數據。

如果這不適合你,你將會學習如何實現一些Maven。

+0

嗯。有趣的方法。 – JesperE

1

Artifactory不與Maven綁定,可以存儲和搜索任何二進制文件,無論佈局如何(只有在您需要Artifactory才能提取有關您的工件的模塊信息時才需要自定義佈局,該工具用於版本自動清理,交叉佈局轉換等)。

由於Artifactory只能通過HTTP訪問,所以任何可以發送GET和PUT查詢(分別用於解析和發佈)的構建工具都可以與之通話。 一個常見的使用案例是使用curl,但Artifactory還與領先的CI工具進行了良好的OOTB集成,以便輕鬆進行基於配置的解析和發佈。 您可能會發現this blog post作爲有關使用Artifactory運行非Java /非Maven構建的genreral信息很有用。

4

忘記了這些事情被稱爲「Maven倉庫」的事實,而Maven對倉庫結構有一定的期待,這種結構也是幾乎所有其他Java構建工具所使用的。將這些事情看作是具有座標的工件的一般存儲:groupId,artifactId,version,qualifier。

一個好的存儲庫管理器並不關心你在這個存儲庫中存儲什麼。它可能是一個ZIP文件,一個EXE,無論你想存儲什麼。所有關心的是工件都存儲在這個存儲庫結構中。當您使用存儲庫管理器時,最終結果是可由這些座標尋址的工件的集合。

我使用存儲庫管理器來做一些與Java無關的事情,包括存儲部署過程中使用的ZIP文件。我使用curl訪問我的存儲庫管理器。在這種情況下,它可以被看作是一個簡單的REST可訪問位桶,它將一些結構應用於您存儲在其中的文件。

(另請注意,我的回答是不營銷或者Artifactory的或Nexus。;-)