2012-07-13 15 views
7

Tôi đã đi qua các tài liệu Ivy và tôi có một câu hỏi về mặc định ivysettings.xml được tìm thấy bên trong ivy.jar.ivysettings.xml: Tôi có thể "sửa đổi" cài đặt mặc định mà không sửa đổi bình hoặc thay thế hoàn toàn chúng không?

Tất cả những gì tôi muốn làm là thay đổi kho lưu trữ công cộng thành kho lưu trữ Maven cục bộ mà chúng tôi có. Đó là nó. Tôi có thể sao chép tất cả các tệp ivysettings*.xml vào dự án của tôi và sử dụng <ivy:settings> để trỏ đến nó, nhưng sao chép nhiều thứ. Tôi cũng có thể sửa đổi các ivy.jar, nhưng điều đó cho biết thêm đau đầu bảo trì. Nhà phát triển phải sử dụng ivy.jar của tôi và nếu chúng tôi chuyển sang phiên bản mới, tôi sẽ phải sửa đổi lại.

Vì vậy, làm cách nào để giữ tất cả các cài đặt chuẩn của Ivy và chỉ cần chuyển đổi kho lưu trữ để sử dụng? Tôi chỉ muốn lớp phủ những thay đổi của tôi đối với những gì Ivy đã có. hơn


Và hai câu hỏi:

  • phần chênh lệch giữa ivyconf*.xml tập tin và các ivysettings*.xml file là gì? Tại sao có cấu hình trùng lặp ở Ivy?
  • Sách hay về Ivy là gì? Tôi hiện đang sử dụng Ant trong hành động của Manning bao gồm Ivy theo cách hơi tóm tắt và hơi bị lỗi thời. Các tài nguyên trên trang web Ivy chính nó là khủng khiếp.

Trả lời

1

Cuối cùng đã tìm ra.

Tôi đã sao chép tệp ivysettings.xml từ bình và thực hiện một sửa đổi nhỏ. Lưu ý rằng đầu tiên bao gồm trỏ đến một tập tin XML trong ivy ${ivy.lib.dir} và không ${ivy.default.settings.dir}:

<ivysettings> 
<settings defaultResolver="default"/> 
    <include file="${ivy.lib.dir}/ivysettings-public.xml"/> 
    <include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/> 
    <include url="${ivy.default.settings.dir}/ivysettings-local.xml"/> 
    <include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/> 
    <include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/> 
</ivysettings> 

tôi có riêng ivysettings-public.xml của tôi mà là giống như mặc định, nhưng bây giờ định nghĩa một root đến kho của tôi.(Vâng, nó localhost cho bây giờ, nhưng tôi sẽ đặt nó vào một máy chủ thực tế một lần tôi nhận được tất cả mọi thứ được giải quyết):

<ivysettings> 
    <resolvers> 
     <ibiblio name="public" m2compatible="true" 
       root="http://localhost:8081/artifactory/repo" /> 
    </resolvers> 
</ivysettings> 

Bây giờ, trong build.xml của tôi, tôi đã điều sau đây:

<property name="ivy.lib.dir"  value="${basedir}/ivy.lib"/> 

<taskdef uri="ivylib:org.apache.ivy.ant" 
    resource="org/apache/ivy/ant/antlib.xml"> 
    <classpath> 
     <fileset dir="${ivy.lib.dir}"> 
      <include name="ivy.jar"/> 
      <include name="ivy-*.jar"/> 
     </fileset> 
    </classpath> 
</taskdef> 

<ivy:configure file="${ivy.lib.dir}/ivysettings.xml" override="true"/> 

Điều đó dường như làm các trick.

+0

bạn không nên sao chép tệp ivysettings.xml thông thường. Bạn có thể làm theo số mà tôi đã viết trong câu trả lời của mình. Và sau đó làm những gì bạn phải làm. Tôi phải nói mặc dù. Những điều cơ bản này được đề cập trong các ví dụ bên trong src có thể tải xuống được. –

6

Đó là tập tin ivysettings.xml tôi

<ivysettings> 
    <include url="${ivy.default.settings.dir}/ivysettings.xml"/> 
    <resolvers> 
     <chain name="download-chain" changingPattern=".*" checkmodified="true" > 
      <ibiblio name="maven" m2compatible="true" /> 
     </chain> 
    </resolvers> 
</ivysettings> 

Chú ý rằng tôi viết phân giải phụ của tôi ở đây, nhưng sử dụng mọi thứ khác khỏi một tiêu chuẩn, được ghi trong url. Thao tác này sẽ tải các cài đặt từ tệp ivysettings.xml trong tệp ivy.jar.

Đối với ivyconf * .xml. Tôi nghĩ nó không được dùng nữa. Ivysettings là cách mới để làm điều này.

Tài nguyên khá khủng khiếp. Tôi hoàn toàn đồng ý với điều đó. Tuy nhiên, rất nhiều câu trả lời trong stackoverflow.com đủ dài và thực sự cố gắng dự đoán các sự cố

Câu trả lời của Mark O'Connor đặc biệt dài dòng và thẳng thắn. Bạn phải chấp nhận thực tế rằng bạn đang học cái gì đó mới, chỉ cần cho nó thời gian.

+0

Tôi biết nó sẽ đưa tôi thời gian để nhặt nó lên, nhưng ngay cả những điều cơ bản rất được giải thích kém. Đây sẽ là câu hỏi đầu tiên ai đó sẽ có nếu họ ' –

+0

tôi có được quyền này: trỏ tới ivysettings.xml trong jar? Bởi vì tôi chưa bao giờ thiết lập biến ivy.default.settings.url và tôi cũng không có một tệp ivysettings.xml trên hệ thống tệp của mình. –

+0

đã lâu rồi, nhưng chạy ant với -d hoặc -v và nó sẽ hiển thị nhiều thông tin bao gồm các biến và giá trị của thuộc tính –

0

Trong build.xml của bạn bao gồm như sau:

<property name="ivy.settings.dir" value="PATH OF SETTINGS" /> 
<property file="${ivy.settings.dir}/ivysettings.properties" /> 
<ivy:settings file="${ivy.settings.dir}/ivysettings.xml" />