2012-12-04 55 views
1

我們常春藤回購如本文中所描述的設置。路徑映射到模塊沒有問題。我們有一個模塊foo,然後foo創建工件foo-api.2.1.0.jar和foo.2.1.0.jar(實現)。它的問題是foo-api.2.1.0.jar。映射常春藤文物到Maven

我試過了maven分類器,但後來想找到foo.2.1.0-api.jar,而不是foo-api.2.1.0.jar。

鏈接中的圖表意味着ivy.xml或pom.xml可以爲mymod-api,mymod-impl創建示例佈局。一個人如何用一個pom做到這一點?

更新:

一個建議是讓行家文物是mymod的API和mymod-implement執行,但隨後有行家查詢回購爲:

/com/mycorp/foo-api/2.1.0.0/foo-api.jar 
    /com/mycorp/foo/2.1.0.0/foo.jar 

而常春藤使他們:

/com/mycorp/foo/2.1.0.0/foo-api.jar 
    /com/mycorp/foo/2.1.0.0/foo.jar 

因此,只使用maven artifacts會使它們無法被發現。

更新2:

我們正在使用Nexus回購管理器。

+0

使用像Nexus這樣的Maven倉庫管理器來爲你管理工件會更簡單。它非常輕便,只使用文件系統(沒有數據庫),更重要的是符合標準。我一直都在使用Maven和Ivy項目 –

+0

我們使用的是Nexus。你如何將常春藤工件映射到Maven工件?常春藤你的解析器配置是什麼? – jamie

回答

1

你不想要分類器,那會做你說的。你需要的是工件ID爲​​該工件的「foo-api」。這不是問題,它按預期工作。

+0

查看我上面的新編輯。 – jamie

1

如果你使用的Nexus,作爲你的倉庫管理器,然後檢查了關於如何配置你的常春藤構建這樣的回答:

Use public maven repository with ivy

UPDATE1

從常春藤

文件發佈的Nexus描述在這裏:

how to publish 3rdparty artifacts with ivy and nexus

道歉提前,這是非常全面的一nd也將解釋Maven中分類器的重要性。

UPDATE2

當發佈的Nexus:

<ivy:publish resolver="deploy"...> 
    <artifacts pattern="${build.dr}/[artifact](-[classifier]).[ext]"/> 
</ivy:publish> 

確保您使用的是ibilio解析:

<ivysettings> 
    <settings defaultResolver="central"/> 
    <credentials host="somehost" realm="Sonatype Nexus Repository Manager" username="????" passwd="????"/> 
    <resolvers> 
     <ibiblio name="central" m2compatible="true"/> 
     <ibiblio name="deploy" root="http://somehost/nexus/content/repositories/repo" m2compatible="true"/> 
    </resolvers> 
</ivysettings> 

的 「疑難雜症」 是m2compatible = 「真」。由於歷史原因,解析器支持更老的Maven 1 respository格式(Ibilio是Maven Central的舊名稱)。

+0

我有一個Nexus repo,裏面裝滿了我需要通過Maven訪問的Ivy build。這篇文章是關於一個Nexus回購的Maven構建,他們需要通過Ivy訪問。 – jamie

+0

@jamie好的,現在你真的讓我困惑...... Nexus是一個Maven倉庫管理器,根據定義,這意味着它被設計爲支持Maven客戶端....你如何將內容發佈到倉庫?我已更新我的回答 –

+0

我們正在使用的是作爲常春藤回購。我們在我們的ant文件中使用發佈。 Nexus並不關心你把東西放在哪裏,它只是想要一條路。常春藤不在乎你放置什麼東西,它只是想要一個神器模式。然而,Maven除非有人能夠告訴我,否則需要在特定路徑上出現僞像。我開始認爲唯一的解決方案是在Nexus中移動我們的文件,並修改我們的ivy解析器以匹配maven。 – jamie