2013-01-08 121 views
2

我使用不同的常青藤配置向Maven存儲庫發佈了組件的少數情況。作爲一個例子,我採取了以下方法(Ivy Documentation)做同樣..使用常青藤向Maven存儲庫發佈多個構件

<ivy-module version="1.0"> 
<info organisation="org.apache" module="filter"/> 
<configurations> 
<conf name="api" description="only provide filter framework API"/> 
<conf name="homemade-impl" extends="api" description="provide a home made implementation of our api"/> 
</configurations> 

<publications> 
    <artifact name="filter-api" type="jar" conf="api" ext="jar"/> 
    <artifact name="filter-hmimpl" type="jar" conf="homemade-impl" ext="jar"/>  
</publications> 

</ivy-module> 

根據上述結構,所產生的僞像濾波器-api.jar文件過濾hmimpl。 jar,並且我生成了一個pom文件filter.pom並將其發佈到一個maven倉庫中。

現在,當我嘗試使用以下解決另一個組件神器過濾器API ..

<dependency org="org.apache" name="filter" rev="3.1" conf="default->api"/> 

但它不工作,我相信我的filter.pom應該包含一些模塊這樣,使它工作..

<modules> 
     <module>api</module> 
     <module>homemade-impl</module> 
    </modules> 

我是正確的,如果是我該怎麼常春藤不同的conf在行家映射到模塊。

回答

5

將多個文件發佈到Maven存儲庫是非常棘手的,因爲Maven模塊通常包含一個工件。 Maven模塊確實支持額外的模塊構件,這些模件構件在Maven依賴關係中使用「分類器」屬性進行引用。

以下答案提供發佈多個文件到一個Maven模塊的例子:

可觀察到ANT腳本使用makepom生成POM文件和這些文件被視爲出版物(常春藤出版物部分的一部分)。

欲瞭解更多背景信息,請參閱以下答案,以解決Maven「範圍」與常春藤「構圖」之間的區別。

最後,如果你常青藤構建使用配置,它可以配置makepom任務配置和範圍之間的映射:

<ivy:makepom ivyfile="${build.dir}/ivy.xml" pomfile="${build.dir}/${ivy.module}.pom"/> 
    <mapping conf="api" scope="compile"/> 
</ivy:makepom> 
0

最有可能的問題是與依賴聲明。您可以使用conf =「default-> api」將依賴關係拉入您的'默認'配置。但是你真的希望它們在「編譯」配置文件中,將它們包含在你的編譯類路徑中。

相關問題