2011-01-29 160 views
34

使用公共Maven仓库我有一个包含常春藤

<dependencies> 
    <dependency org="commons-lang" name="commons-lang" rev="2.4"/> 
    <dependency org="foo-bar" name="superwidgets" rev="1.5"/> 
</dependencies> 

整个superwidget东西在Maven仓库在http://example.com/m2/主办的ivy.xml。常春藤文档mentions resolvers,但它似乎假定一个常春藤资源库。我怎样才能添加一个非官方的Maven仓库到我的常春藤设置只能由一个模块使用? (或者换句话说,与iven中的maven的<repository>标签相对应?)没有什么特别的,所以我希望我的ivy.xml中有一行代码。

回答

43

你需要(在常春藤讲resolvers)添加ivysettings.xml文件,列出了下列库

<ivysettings> 
    <settings defaultResolver="chain"/> 
    <resolvers> 
     <chain name="chain"> 
      <ibiblio name="central" m2compatible="true"/> 
      <ibiblio name="example" m2compatible="true" root="http://example.com/m2/"/> 
     </chain> 
    </resolvers> 
</ivysettings> 

在我看来,这更有意义分开的依赖性声明(的ivy.xml)从检索机制(settings.xml)。这在Maven中不需要,因为它只支持一种类型的存储库。

如果你想获得真正看中的,您可以控制哪些程序存储库提供了一个特定的模块:

<ivysettings> 
    <settings defaultResolver="central"/> 
    <resolvers> 
     <ibiblio name="central" m2compatible="true"/> 
     <ibiblio name="example" m2compatible="true" root="http://example.com/m2/"/> 
    </resolvers> 
    <modules> 
     <module organisation="foo-bar" name="superwidgets" resolver="example"/> 
    </modules> 
</ivysettings> 
7

我更喜欢链式解析器,其中包括SpringSource的EBR和Maven中央太像这样:

<ivysettings> 
    <settings defaultResolver="spring-chain" /> 
    <resolvers> 
     <chain name="spring-chain"> 
      <url name="com.springsource.repository.bundles.release"> 
       <ivy pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
       <artifact pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
      </url> 
      <url name="com.springsource.repository.bundles.external"> 
       <ivy pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
       <artifact pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
      </url> 
      <ibiblio name="ibiblio" m2compatible="true"/> 
     </chain> 
    </resolvers> 
</ivysettings> 

尽管我不直接使用它们,但我更喜欢create and control my own local Ivy repository