2012-03-09 28 views
12

Làm cách nào để Ivy có thể giải quyết các phụ thuộc (bao gồm phụ thuộc với changing="true") từ bộ nhớ cache cục bộ khi ngoại tuyến/ngắt kết nối?Giải quyết các phụ thuộc của Apache Ivy khi ngoại tuyến/ngắt kết nối?

Tôi đang làm việc trên một dự án mã nguồn mở dựa trên Java sử dụng Apache Ivy để giải quyết và tải xuống các phụ thuộc của bên thứ ba. Dự án của build.xml có một mục tiêu kiến ​​tên là resolve để tải xuống Ivy (nếu cần) và sau đó sử dụng Ivy để lấy các lọ cần thiết.

Mọi thứ hoạt động tốt khi trực tuyến. Tuy nhiên, nếu không truy cập Internet, ant resolve không thành công ngay cả khi các lọ cần thiết nằm trong bộ nhớ cache Ivy cục bộ (~/.ivy2/cache). Có vẻ như Ivy đang cố gắng kết nối với kho lưu trữ Maven để làm mới các phụ thuộc changing="true".

Các lỗi tôi nhận được là tương tự như sau:

[ivy:retrieve] You probably access the destination server through a proxy server that is not well configured. 
[ivy:retrieve] You probably access the destination server through a proxy server that is not well configured. 
[ivy:retrieve] 
[ivy:retrieve] :: problems summary :: 
[ivy:retrieve] :::: WARNINGS 
[ivy:retrieve] Host repo.example.com not found. url=http://repo.example.com/exampleorg/examplename/examplerev/ivys/ivy.xml 
[ivy:retrieve] Host repo.example.com not found. url=http://repo.example.com/exampleorg/examplename/examplerev/jars/examplename.jar 
[ivy:retrieve]   module not found: exampleorg#examplename;examplerev 
[ivy:retrieve] ==== local: tried 
[ivy:retrieve] ~/.ivy2/local/exampleorg/examplename/examplerev/ivys/ivy.xml 
[ivy:retrieve] -- artifact exampleorg#examplename;examplerev!examplename.jar: 
[ivy:retrieve] ~/.ivy2/local/exampleorg/examplename/examplerev/jars/examplename.jar 
[ivy:retrieve] ==== shared: tried 
[ivy:retrieve] ~/.ivy2/shared/exampleorg/examplename/examplerev/ivys/ivy.xml 
[ivy:retrieve] -- artifact exampleorg#examplename;examplerev!examplename.jar: 
[ivy:retrieve] ~/.ivy2/shared/exampleorg/examplename/examplerev/jars/examplename.jar 
[ivy:retrieve] ==== repo: tried 
[ivy:retrieve] http://repo.example.com/exampleorg/examplename/examplerev/ivys/ivy.xml 
[ivy:retrieve] -- artifact exampleorg#examplename;examplerev!examplename.jar: 
[ivy:retrieve] http://repo.example.com/exampleorg/examplename/examplerev/jars/examplename.jar 
[ivy:retrieve]   :::::::::::::::::::::::::::::::::::::::::::::: 
[ivy:retrieve]   ::   UNRESOLVED DEPENDENCIES   :: 
[ivy:retrieve]   :::::::::::::::::::::::::::::::::::::::::::::: 
[ivy:retrieve]   :: exampleorg#examplename;examplerev: not found 
[ivy:retrieve]   :::::::::::::::::::::::::::::::::::::::::::::: 
[ivy:retrieve] 
[ivy:retrieve] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS 

BUILD FAILED 
~/exampleproj/build.xml:123: impossible to resolve dependencies: 
     resolve failed - see output for details 

Chạy ant -verbose resolve theo đề nghị của các bản in cảnh báo dòng sau trong đầu ra:

[ivy:retrieve] don't use cache for exampleorg#examplename;examplerev: changing=true 

Làm thế nào tôi có thể nhận được Ivy để giải quyết changing="true" phụ thuộc từ bộ nhớ cache khi ngoại tuyến, nhưng tiếp tục truy vấn kho lưu trữ mỗi khi xây dựng trực tuyến?

+1

Tôi đã đưa ra câu trả lời cho điều đó trong câu hỏi này: http://stackoverflow.com/questions/6971517/how-do-i-tell-ivy4r-to-stay-offline – oers

+0

Đó là câu hỏi thứ hai. Người đầu tiên đã được trả lời –

+0

@Mark: Bạn nói đúng. Tôi đã chỉnh sửa câu hỏi để xóa "cách đặt điều kiện" ivy.cache.ttl.default = eternal'? " một phần vì đó là một vấn đề riêng biệt. Nhưng câu hỏi ban đầu của tôi - cách giải quyết các phụ thuộc khi ngoại tuyến - vẫn chưa được trả lời. –

Trả lời

11

oers đã trả lời câu hỏi, nhưng không rõ ràng.

Thử chạy thiết lập ivy.cache.ttl.default tài sản từ dòng lệnh xây dựng của bạn:

ant -Divy.cache.ttl.default=eternal build 

Nguồn:

+0

Tôi hy vọng bạn không phiền, tôi đã cập nhật câu trả lời của tôi với một số thông tin bạn đã cung cấp ở đây, để cải thiện nó. – oers

+0

@oers Đừng bận tâm chút nào. –

+0

Cảm ơn câu trả lời. Thật không may, '-Divy.cache.ttl.default = eternal' không hoạt động đối với tôi. Vui lòng xem câu hỏi được cập nhật. –

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