2009-05-19 29 views
4

是否有一個maven客戶端不是mvn(maven發行版中包含的二進制文件)我可以用來從maven存儲庫中下拉一個工件而不使用pom嗎?我想使用一個Maven倉庫作爲我們的操作團隊獲取構建的回購(包括 構建的快照),但我不希望他們不得不亂用編寫poms並在其中聲明依賴關係。理想情況下,我正在尋找一個cli客戶端,我只需傳入一個repo url並協調並下載給定的工件即可。這樣的事情是否存在?還是我最好爲此編寫一次性腳本?實用工具從maven回購沒有mvn/poms下載工件

+0

我相信這是api whaley指的是http://nexus.sonatype.org/nexus-faq.html#25 – 2010-07-30 21:22:53

回答

4

使用Nexus。它提供了一個其他團隊可以用來下載工件的Web界面。 http://nexus.sonatype.org/

+0

我已經在使用Nexus,並且我剛剛發現了它們的url API,用於放下基於工件的url在座標上。其中一位聯繫開發者昨天在他們的irc頻道上向我通報了這件事。謝謝你的答案。 – whaley 2009-05-21 16:18:52

3

使用maven embedder。更重要的是,使用Maven嵌入器內部的功能來解析和下載罐子。儘管如果你只是想寫一個簡單的CLI,倉庫結構並不複雜,你可以很容易地編寫一個腳本,該腳本使用maven repo url,工件ID,組ID和版本來生成jar的完整URL。

0

從技術上說,存儲庫是通過HTTP訪問的,所以給定存儲庫位置,工件和座標時,應該可以爲操作團隊提供可在任何瀏覽器中打開的工件的URL。

+0

由於存儲庫中的實際工件文件名具有時間戳,我希望它們能夠以編程方式拉下任何工件,所以會得到一些快照。我已經在使用nexus了,結果他們已經有了api。 – whaley 2009-05-21 16:19:54

+0

Gotcha - 很好的瞭解nexus – 2009-05-21 17:15:04

0

想想大同URL它可以讓你使用普通的URL來引用行家文物,像這樣:

 
mvn:groupId/artifactId/version 

PAX URL Website更多信息(MVN協議處理程序)。

託尼

7

我看到3種簡單的選擇:

  1. 只需發送一個鏈接指向你的神器在你的倉庫,並讓他們使用自己的瀏覽器。
  2. 安裝和使用wgetwget http://path/to/artifact.extension)。
  3. 安裝和使用mvn dependency:get(需要mvn不需要需要pom.xml,請參閱this answer瞭解更多詳情)。
1

這是我們如何做到在jcabi-aether

final File repo = this.session.getLocalRepository().getBasedir(); 
final Collection<Artifact> deps = new Aether(this.getProject(), repo).resolve(
    new DefaultArtifact("junit", "junit-dep", "", "jar", "4.10"), 
    JavaScopes.RUNTIME 
); 

所有你需要提供這個LIB是1)遠程倉庫的列表,2)本地回購的位置,和3)工件的Maven座標。圖書館使用Sonatype的Apache Aether