2012-11-07 25 views
11

Trước đây, chúng tôi đã có các gói và tính năng của chúng tôi trên hệ thống tệp và cung cấp chúng trong Eclipse thông qua tệp định nghĩa đích với vị trí 'Thư mục'. Theo cách này, rất dễ sử dụng chúng với các trình thủ thuật xuất khẩu trong Eclipse.Cách sử dụng thư mục chứa các gói của bên thứ ba trong một xây dựng Tycho

Bây giờ tôi đang cố gắng xây dựng một eclipse-plugin với Tycho có phụ thuộc bên thứ ba, ví dụ: javax.vecmathorg.apache.commons.math.

Từ những gì tôi biết, cách tốt nhất để có được các phụ thuộc trong xây dựng Tycho là thông qua kho lưu trữ p2. Vì vậy, tôi đang sử dụng một cho các gói Eclipse. Nhưng đối với các nhóm bên thứ ba của tôi, có vẻ như không có kho lưu trữ p2.

Vì vậy, câu hỏi của tôi là: Làm thế nào để tôi dễ dàng có được các JAR (vecmath, commons-math) vào một kho lưu trữ p2?

Tôi nghĩ tôi có thể xây dựng kho lưu trữ p2 với Tycho, nhưng làm cách nào để thực hiện việc này khi tôi không thể truy cập vào nhóm của bên thứ ba trong Tycho? Tôi đã cố gắng sử dụng định nghĩa đích, nhưng Tycho chỉ hỗ trợ liên kết đến kho lưu trữ p2 chứ không phải thư mục hoặc cài đặt. Vì vậy, có những cách khác để sử dụng phụ thuộc bên thứ ba của tôi trong một xây dựng Maven/Tycho?

Trả lời

0

Theo câu hỏi của bạn, các phụ thuộc của bên thứ ba đã là các gói. Điều này là tốt – tất cả những gì còn lại để làm là tạo ra siêu dữ liệu p2 cho các gói.

Điều này có thể được thực hiện dễ dàng thông qua Features and Bundles Publisher application. Kết quả là một kho lưu trữ p2. Rõ ràng, bạn không muốn tất cả các nhà phát triển của bạn phải làm điều này tại địa phương để chạy xây dựng Tycho, vì vậy bạn nên đặt kết quả của ứng dụng nhà xuất bản lên một máy chủ web. Sau đó, tham khảo các gói thông qua một URL http trong tệp đích của dự án của bạn.

+0

Đó là cách dễ nhất và nhanh nhất, để tạo repo p2. cảm ơn tất cả mọi người. – Timo

+4

Tôi không đồng ý. Bạn phải tạo trang web theo cách thủ công và nếu các lọ không phải là các gói, bạn phải tự "nhóm" chúng. Tất cả những điều đó thật lộng lẫy, rườm rà và có thể dễ dàng được tự động bằng cách sử dụng plugin p2-maven (được đề cập bên dưới). Tôi là tác giả của plugin p2-maven và tôi đã mã hóa nó chỉ vì tôi thấy nó thực sự cồng kềnh khi sử dụng "Ứng dụng nhà xuất bản tính năng và gói". Hãy thử plugin p2-maven và bạn sẽ thấy nó dễ dàng hơn bất cứ điều gì khác: https://github.com/reficio/p2-maven-plugin –

+0

Vâng, tôi đồng ý plugin p2-maven trông giống như giải pháp tốt nhất . Xử lý sự phụ thuộc của bên thứ ba trong các dự án Eclipse/RCP thực sự là một nỗi đau. Có vẻ như p2-maven-plugin có thể giảm đau đáng kể này để duy trì một danh sách ở đâu đó và xuất bản một trang cập nhật p2 từ CI build để chúng ta có thể sử dụng nó trong tất cả các bản xây dựng tycho của chúng tôi. – Kris

11

Một vài tùy chọn khác nhau ...

P2 Plugin

Sử dụng p2-maven-plugin để bọc tất cả phụ thuộc phi OSGi của bạn thành bó, và tạo ra một kho lưu trữ p2.

Tôi chưa thử plugin p2-maven (nó không tồn tại khi tôi đang thiết lập dự án hiện tại của mình). Việc thực hiện nó dựa trên tycho, nhưng bạn có thể thấy nó cung cấp một cách thuận tiện hơn để giải quyết vấn đề của bạn hơn là chỉ các plugin tycho.

Bundle Plugin

Sử dụng maven-bundle-plugin-bọc của bạn phụ thuộc phi OSGi (một wrapper pom mỗi phụ thuộc), và cài đặt nó vào kho lưu trữ của bạn. Tôi nghĩ commons-math đã là một sự phụ thuộc, vì vậy bạn có thể chỉ cần bọc vecmath. Sau đó, bạn có thể liệt kê những phụ thuộc đó trong các tệp pom tycho dựa trên <dependencies>.

Cách tiếp cận này có lợi thế là bạn không cần phải thiết lập kho lưu trữ p2 chỉ để xây dựng dự án của bạn. Điểm bất lợi là việc quản lý các phụ thuộc trong các dự án bó của bạn không còn là trường hợp chỉ sửa đổi tệp MANIFEST.MF: bạn cũng có thể cần phải cập nhật pom nữa.

Bundle plugin và Tycho

Nếu bạn sử dụng cách tiếp cận Bundle Plugin để gói phụ thuộc vào bó OSGi, nó vẫn có thể hữu ích để thiết lập một kho p2 cho những người phụ thuộc dù sao, như đơn giản hoá này thiết lập nền tảng đích trong Eclipse PDE. Để thực hiện điều này, bạn có thể tạo một dự án dựa trên tycho mới để thu thập các phụ thuộc vào một kho lưu trữ p2: đó là các gói phụ thuộc đã được bó, cùng với các phiên bản được bao bọc của các phụ thuộc không phải OSGi.Bằng cách này, dự án tạo kho lưu trữ p2 liệt kê các gói phụ thuộc trong pom của nó và các dự án bó của bạn có thể tiêu thụ kho lưu trữ p2 mà không liệt kê bất kỳ phụ thuộc nào trong poms của chúng.

Đây là phương pháp tôi đang sử dụng. Cụ thể, tôi đang sử dụng dự án eclipse-feature để xác định tính năng cơ sở bao gồm tất cả các phụ thuộc của bên thứ ba. Tôi cũng có tùy chọn cấu hình <deployableFeature> trên bộ đóng gói được đặt thành true, sẽ tạo kho lưu trữ p2 trong thư mục đích. Tính năng này có thể được cài đặt vào cá thể Eclipse thông thường của tôi, giúp dễ dàng sử dụng nền tảng Eclipse hiện tại làm nền tảng đích. Nó cũng có thể được sử dụng như một kho lưu trữ p2 có thể được sử dụng ở nơi khác trong xây dựng tycho (tức là theo mã của tôi), hoặc như một kho lưu trữ trong một tệp Eclipse .target.

Các eclipse-feature dường như là loại bao bì tốt nhất trong Tycho 0.13.0. Có thể có loại bao bì phù hợp hơn trong các phiên bản gần đây hơn.

+0

Câu trả lời này đúng hơn trả lời câu hỏi này: http://stackoverflow.com/q/29664505/1523648 – oberlies

1

một nơi tốt để tìm kiếm lọ bó bên thứ 3 trong các hợp đồng mua p2 là quỹ đạo thực

http://download.eclipse.org/tools/orbit/downloads/

commons.math là ở đó.

Nếu bó bên OSGi thứ 3 của bạn không có sẵn trong một repo p2, nhưng trong một repo maven như

http://search.maven.org/

bạn có thể sử dụng pomDependency Tycho = xem xét chuyển đổi:

http://wiki.eclipse.org/Tycho/How_Tos/Dependency_on_pom-first_artifacts

+0

Tôi đã tìm thấy quỹ đạo đã được một vài phút trước đây, nó thực sự thuận tiện. Lời khuyên khác có vẻ thú vị, cảm ơn. – Timo

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