2009-06-23 40 views
11

có ai biết làm thế nào để tôi chỉ định trong Ivy một cái gì đó giống như gương/mirrorOf trong Maven? Tôi đang làm việc với một proxy Maven cục bộ (Nexus) và cần công cụ để chỉ định kho lưu trữ gốc nào mà Nexus proxy sẽ truy cập.Ivy qua Nexus proxy

Trong Maven tôi làm chỉ đơn giản là:

<mirrors> 
    <mirror> 
    <id>central-mirror</id> 
    <mirrorOf>central</mirrorOf> 
    <url>http://localhost:8081/content/repositories/central</url> 
    </mirror> 
</mirrors> 

nhưng tôi không thể tìm thấy loại tùy chọn trong Ivy.

Trả lời

6

Tôi không nghĩ rằng tùy chọn này tồn tại trực tiếp. Bạn có thể thử triển khai chain và đặt kho lưu trữ Nexus của mình lên trước trung tâm trong chuỗi đó. Nếu tôi hiểu cách chuỗi hoạt động chính xác (đó là một điều lớn nếu), Ivy sẽ kiểm tra kho lưu trữ của bạn trước khi tập trung, miễn là kho lưu trữ của bạn có nội dung liên quan ở trung tâm sẽ không cần thiết.

Xem chi tiết tutorial để biết chi tiết.

+1

Cảm ơn - đó là những gì tôi đã sợ. Ivy không sống theo mong đợi của tôi sau khi làm việc với Maven. –

+2

Ivy chỉ có một cách tiếp cận quản lý phụ thuộc khác nhau. –

+6

-1 nhận xét của Mark. Nó không phải là một cách khác, đó là một tính năng thiếu. Tương tự: Hãy tưởng tượng bạn đang sử dụng trình duyệt không có cài đặt cho 'Cấu hình Proxy', điều đó không có nghĩa là nó tiếp cận duyệt web theo cách khác, điều đó có nghĩa là phần mềm không sử dụng được (không có hack) khi bạn thực sự cần đặt proxy. –

-1

Tôi đã làm tương tự nhưng với Archiva, những gì là rất giống nhau. Bạn chỉ phải khai báo trong một chuỗi mới như sau:

<chain name="private"> 
<url name="archiva" m2compatible="true"> 
    <ivy pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/ivy.xml" /> 
    <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
    <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact].[ext]" /> 
    </url> 
</chain> 
+1

Sử dụng Archiva để đạt được proxy không nằm trong phạm vi của câu hỏi. Bạn có thể làm điều đó theo một số cách khác nhau. Vấn đề là sử dụng nó từ ivy theo cách tương tự nó được sử dụng trong maven. –

+0

Tôi không nghĩ rằng một lựa chọn như vậy tồn tại ở Ivy. –

-1

Archiva quản lý Maven 2 kho (hiện vật với các dữ liệu meta Maven) không có thường dữ liệu Ivy meta (ivy.xml). Và bố cục Maven 2 là [tổ chức]/[mô-đun]/[sửa đổi]/[tạo phẩm] - [sửa đổi]. [Ext].

Chúng ta chỉ cần cung cấp các thông tin sau

<url name="archiva" m2compatible="true"> 
    <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
    </url> 
</chain> 

hoặc

<settings defaultResolver="archiva"/> 
    <resolvers> 
<ibiblio name="archiva" m2compatible="true" root="http://.../archiva/repository/internal/[organization]/[module]/[revision]/[artifact]-[revision].[ext]"/> 
    </resolvers> 
+0

Sử dụng Archiva để đạt được proxy không nằm trong phạm vi của câu hỏi. Bạn có thể làm điều đó theo một số cách khác nhau. Vấn đề là sử dụng nó từ ivy theo cách tương tự nó được sử dụng trong maven. –

8

Bạn cần phải tạo một trình giải quyết công mà những gì bạn muốn (chi tiết @Ivy docs)

Về cơ bản lưu đoạn mã sau trong $ USERHOME/.ivy2/ivysettings-public.xml. Cái này cần phải dùng mẹo.

<ivysettings> 
    <resolvers> 
    <ibiblio name="public" m2compatible="true" root="http://localhost:8081/content/groups/public"/> 
    </resolvers> 
</ivysettings> 
  • Quá trình cài đặt tiêu chuẩn chưa sửa đổi có 'mối quan hệ' trong URL!
  • Nếu bạn cần triển khai các tạo tác, tôi nghĩ giải pháp là thực hiện một việc tương tự với trình phân giải được chia sẻ (xem liên kết tới các tài liệu ở trên), nhưng tôi chưa thử.
  • Tôi đã thay đổi URL cục bộ của bạn để giải quyết thành 'nội dung/nhóm/công khai' chuẩn, tốt hơn vì trong phần cài đặt maven phía trên bạn đang chuyển tất cả các cuộc gọi qua gương chứ không phải chỉ đến trung tâm. Chỉ cần thêm bất kỳ kho bổ sung nào vào nhóm đó trong giao diện người dùng Nexus khi chúng xuất hiện và bạn sẽ ổn.
  • Nếu tải dự án của bạn đó là ivysettings riêng mà không tôn vinh giá trị mặc định, sau đó các thiết lập này sẽ không được nạp và bạn đang một lần nữa lại không :(
+1

Tôi sẽ thử nó nhưng có vẻ như thực tế là dự án của ivysettings.xml ghi đè hoàn toàn cấu hình của người dùng nó sẽ không có ích cho tôi. Nhưng dù gì cũng cảm ơn! –

+0

Vấn đề với điều đó là người ta có thể lấy dự án từ kho lưu trữ và chỉ xây dựng nó. Với bất kỳ sửa đổi nào đối với môi trường địa phương, tất cả đều ở cửa sổ ... Nhưng dù sao thì vẫn cảm ơn bạn đã trả lời! –

+0

Đã thử kỹ thuật này với https://svn.apache.org/repos/asf/ant/core/trunk/[email protected]#checkstyle và dường như không có bất kỳ ảnh hưởng nào; các thông báo được gọi là "tải xuống http: //repo1.maven.org/maven2/..." như trước đây. –

2

Đây là cách tôi đã làm cho nó làm việc (The câu trả lời từ @Heron không làm việc cho tôi):

Tạo một tập tin với nội dung này:

<ivysettings> 
    <settings defaultResolver="default"/> 
    <property name="m2-pattern" value="${user.home}/.m2/repository/[organisation]/[module]/[revision]/[module]-[revision](-[classifier]).[ext]" override="false" /> 
    <resolvers> 
    <chain name="default"> 
     <ibiblio name="public" m2compatible="true" root="http://nexus-server:8081/nexus/content/groups/public"/> 
    </chain> 
    </resolvers> 
</ivysettings> 

refere đến nó từ việc xây dựng kiến:

<ivy:settings file="/Users/wdb/.ivy2/ivysettings-public.xml" /> 

Ivy hiện có thể giải quyết các phụ thuộc từ kho lưu trữ nexus của tôi.

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