2011-11-01 32 views
7

Tôi đang sử dụng Grails 1.3.7 và không thể tìm ra cách để có được phiên bản 4.0 của httpclient ngoài đường dẫn lớp của tôi (có lợi cho 4.1). Tôi cần phải làm điều này vì xây dựng no-args được sử dụng trong 4.1 mà plugin dựa vào.cách lấy phiên bản 4.0 của httpclient tắt đường dẫn của tôi trong grails

Chạy báo cáo phụ thuộc của một grails ', có vẻ như 4.1 nên là báo cáo được sử dụng khi chạy. Và nó IS, nếu tôi gói những thứ lên thành một .war. HOWEVER phiên bản 4.0 vẫn kết thúc trên classpath khi sử dụng ứng dụng chạy vì một lý do nào đó. Lưu ý nó là (chính xác) đang được sử dụng tại thời gian biên dịch cho một số nội bộ grails, và bằng cách nào đó nó vẫn còn kết thúc trên classpath của tôi.

-> Tôi có thể tìm ra nơi chính xác điều đó 4,0 .jar là đến từ đâu và kết thúc vào classpath của tôi và ngăn chặn nó xảy ra

(nơi là tất cả các .jars đặt khi chạy qua chạy ứng dụng?) -> Tôi có thể yêu cầu grails biên dịch với 4.1 thay vì 4.0 cho nội bộ của nó (trong trường hợp này là http-builder bởi mô-đun org.codehaus.groovy.modules.http-builder?) Không có giải pháp tốt nhất nhưng tôi sẽ lấy nó , như đóng gói tất cả mọi thứ vào một .war mỗi khi tôi muốn thử nghiệm nó không phải là dễ chịu.

Trợ giúp sẽ được đánh giá cao.

Trả lời

7

tôi chỉ trải qua điều tương tự, thêm dòng sau vào BuildConfig.groovy bạn

dependencies {   
     build 'org.apache.httpcomponents:httpcore:4.1.2' 
     build 'org.apache.httpcomponents:httpclient:4.1.2' 
     runtime 'org.apache.httpcomponents:httpcore:4.1.2' 
     runtime 'org.apache.httpcomponents:httpclient:4.1.2' 
} 

cổ vũ

Lee

+0

Tôi thực sự giải quyết vấn đề này bằng cách sửa đổi plugin đã chỉ định 'build': release: 1.0.0.RC3 'bằng cách thêm' exported = false 'nhưng tôi đã chấp nhận giải pháp của bạn vì nó có thể sạch hơn một chút để giữ nó trong mã riêng và không phải sửa đổi tệp phụ thuộc của plugin. Tóm lại, nó là 'xây dựng' specifier. đó là thủ phạm. Cảm ơn – Peter

1

Bạn có thể nhận httpclient 4,0 tắt của classpath bằng cách thêm một không bao gồm dòng trong BuildConfig.groovy. Tìm ra plugin nào đang khai báo nó như một phụ thuộc bằng cách sử dụng lệnh grails dependency-report.

Khi bạn tìm thấy trang nào được bao gồm, bạn có thể loại trừ nó trong phần bổ trợ của BuildConfig.groovy. Ví dụ:

plugins { 
    compile ':other-plugin:1.0.0' // other-plugin depends on httpclient 4.1 
    compile(':aws:1.2.12.2') { // aws plugin depends on httpclient:3.1 
     excludes 'httpclient' 
    } 
} 

Plugin dựa vào các nhà xây dựng không-arg trong httpclient 4.1 nên tuyên bố nó như là một sự phụ thuộc. Nếu không, bạn nên mở một vấn đề với tác giả của plugin. Để giải quyết vấn đề này, bạn có thể liệt kê httpclient 4.1 trong phần phụ thuộc như các leebutts mô tả ở trên.

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