2012-10-20 33 views
5

Tôi đã nhận thấy nhiều dự án đặt bình org.jdt.core vào lib folder vì nó không có sẵn trong kho lưu trữ maven. sbt, công cụ xây dựng tôi đang sử dụng, có thể kéo phụ thuộc trực tiếp từ URL. Tuy nhiên, tôi không thể tìm thấy bất kỳ liên kết trực tiếp đến các jar trên trang tải eclipse. Các đóng tôi có thể tìm thấy là một liên kết đến toàn bộ jdt zip bao gồm nhiều tệp jar. Tôi không tin rằng sbt có thể trích xuất một lọ từ một sự phụ thuộc zip. Có liên kết trực tiếp hoặc một số cách giải quyết khác không?Có liên kết trực tiếp tới bình eclipse.jdt.core không?

Trả lời

14

Phụ thuộc vào phiên bản bạn muốn đã có trong kho lưu trữ hay chưa.

Đối org.eclipse.jdt.core:

Dự án Tycho dường như để triển khai một số phiên bản của org.eclipse.jdt.core đến trung tâm. Xem:

http://central.maven.org/maven2/org/eclipse/tycho/org.eclipse.jdt.core/ 

Tôi thấy rằng sử dụng search.maven.org. Một trong số đó có thể đủ tốt cho nhu cầu của bạn. Nhưng chúng dường như không có các nhị phân 'chính thức', chỉ cần xây dựng lại chúng.

(Lưu ý rằng đó cũng là một maven.eclipse.org, mà có thể có ích cho một số đồ tạo tác Nhưng nếu dường như không có bất cứ điều gì cho phù hợp với vấn đề cụ thể của bạn..)

Đối với trường hợp tổng quát:

Nói chung, mặc dù bạn không thể tìm thấy tất cả các hiện vật nhật thực trong kho lưu trữ maven. Vì vậy, nếu bạn không thể tìm thấy những gì bạn muốn trong một repo maven, bạn sẽ cần phải tìm thấy nó trong kho Eclipse p2 mình. Hãy nói rằng bạn muốn org.eclipse.jdt.core cho Eclipse 3.8.1 ...

Các trang wiki Eclipse Project Update Sites nói rằng trang web cập nhật cho 3.8.x là

http://download.eclipse.org/eclipse/updates/3.8 

Đó thực sự là một kho lưu trữ p2 'hợp' cho 3.8, 3.8.1 ,… Tiếp theo chúng ta cần tìm ra tên của kho lưu trữ 3.8.1. Sau đây lấy một file jar có chứa compositeArtifacts.xml, trong đó liệt kê các kho đứa trẻ, và greps cho 3.8.1:

curl -s http://download.eclipse.org/eclipse/updates/3.8/compositeArtifacts.jar | \ 
    gunzip -c | \ 
    grep '3\.8\.1' 

Kết quả?

<child location='R-3.8.1-201209141540'/> 

Vị trí đó là đường dẫn tương đối. Nó cho chúng tôi biết kho lưu trữ 3.8.1 là

http://download.eclipse.org/eclipse/updates/3.8/R-3.8.1-201209141540/ 

Bây giờ để tìm nạp chỉ mục tạo tác cho kho lưu trữ đó. Một lần nữa, một tệp XML duy nhất trong một cái lọ. Nhưng lần này, nó không phải là một kho lưu trữ composite, vì vậy chúng tôi chỉ yêu cầu artifacts.jar:

curl -s http://download.eclipse.org/eclipse/updates/3.8/R-3.8.1-201209141540/artifacts.jar | \ 
    gunzip -c | \ 
    grep org.eclipse.jdt.core[\'\"] | \ 
    sort -u 

Kết quả:

<artifact classifier='osgi.bundle' id='org.eclipse.jdt.core' version='3.8.2.v20120814-155456'> 

(Tôi không chắc chắn lý do tại sao org.eclipse.jdt.core trong 3.8.1 đã bắt đầu một phiên bản 3.8 .2, nhưng đó là cách của nó.Hãy nhấn vào…)

Vì vậy, bây giờ chúng tôi có thể ghép lại với nhau URL theo phần tử <mappings> trong tệp artifacts.xml mà chúng tôi vừa tìm nạp. Thêm 'plugins /' vào đường dẫn kho lưu trữ; thêm phiên bản với tên plugin, và sau đó chúng ta có thể lấy nó:

curl -Os http://download.eclipse.org/eclipse/updates/3.8/R-3.8.1-201209141540/plugins/org.eclipse.jdt.core_3.8.2.v20120814-155456.jar 

Nếu bạn thấy mình cần nhiều hơn chỉ là một hoặc hai lọ, bạn có thể nhìn vào sử dụng Tycho, hoặc Eclipse p2 Ant tasks để giải quyết các hiện vật bạn cần vào một thư mục lib trước khi bạn chạy xây dựng sbt của bạn.

+0

Câu trả lời linh hoạt, cảm ơn. Các tycho maven repo là đủ tốt cho tôi vì nó có 3.8.x mà tôi không thể tìm thấy, phần còn lại là đóng băng! –

+0

Đây là một câu trả lời tuyệt vời. Cảm ơn bạn! – awied

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