2011-01-29 23 views
34

Tôi có một ivy.xml chứaSử dụng kho maven công với ivy

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

Các công cụ toàn superwidget được lưu trữ trong một kho lưu trữ maven tại http://example.com/m2/. Tài liệu ivy mentions resolvers, nhưng có vẻ như giả định một kho lưu trữ ivy. Làm thế nào tôi có thể thêm một kho lưu trữ maven không chính thức vào các thiết lập ivy của tôi để chỉ được sử dụng bởi một mô-đun duy nhất? (Hoặc đặt một cách khác, những gì tương ứng với maven của <repository> thẻ trong ivy?) Không có gì lạ mắt, vì vậy tôi mong đợi một một lớp lót trong ivy.xml của tôi.

Trả lời

43

Bạn cần phải thêm một ivysettings.xml tập tin với các kho sau niêm yết (resolvers trong ivy speak)

<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> 

Theo tôi nó làm cho ý nghĩa hơn để tách việc kê khai phụ thuộc (ivy.xml) từ cơ chế truy xuất (settings.xml). Điều này không cần thiết trong Maven vì nó chỉ hỗ trợ một loại kho lưu trữ.

Nếu bạn muốn nhận được sự ưa thích bạn có thể kiểm soát respository phục vụ lên một module cụ thể:

<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

tôi thích resolvers xích bao gồm EBR SpringSource và Maven Trung ương quá, như thế này:

<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> 

Mặc dù tôi không trực tiếp sử dụng chúng, tôi thích create and control my own local Ivy repository.

Các vấn đề liên quan