2012-10-31 24 views
10

Tôi hiện đang quản lý một vài dự án Maven riêng biệt, trong đó tôi sử dụng Protobufs làm định dạng tuần tự hóa và qua dây. Tôi đang sử dụng maven-protoc plugin của David Trott để tạo mã tại thời gian biên dịch.Nhập định nghĩa bộ đệm giao thức giữa các dự án Maven

Tất cả đều tốt và tốt cho đến khi tôi muốn các dự án đó liên lạc với nhau - hay đúng hơn, sử dụng các protobuf của nhau. Ngôn ngữ protobuf có một chỉ thị "nhập khẩu" làm những gì tôi muốn nhưng tôi phải đối mặt với thách thức của việc có dự án A xuất tệp ".proto" (hoặc có thể là một số định dạng trung gian?) Cho dự án B phụ thuộc vào. Maven cung cấp một cách cho một dự án để bó tài nguyên nhưng AFAIK, chúng được sử dụng trong thời gian chạy theo mã và không phải bởi một mục tiêu trong giai đoạn tạo/biên dịch mã nguồn - ít nhất là tôi đã không thể tìm tài liệu mô tả những gì tôi muốn đạt được.

Trả lời

2

Bạn có thể đóng gói tệp .proto của bạn trong một tệp .jar/.zip riêng biệt trong dự án nơi chúng được tạo và xuất bản chúng trong kho lưu trữ của bạn bằng cách sử dụng trình phân loại chuyên dụng. Sử dụng plugin lắp ráp có thể trợ giúp ở đây để xuất bản một thứ gì đó gần với "các lọ nguồn" được xây dựng trong khi phát hành.

Sau đó, đối với các dự án sử dụng chúng, thêm tạo tác được tạo trước đó làm phụ thuộc. Sử dụng plugin phụ thuộc với mục tiêu "giải nén phụ thuộc" và liên kết nó với một giai đoạn trước khi "biên dịch".

+0

Điều đó nghe có vẻ thú vị, bất cứ ai cũng có thể trả lời cách cấu hình –

5

Tôi đã tìm thấy một cách khác để đạt được và không liên quan đến bất kỳ ma thuật Maven nào. Lặn vào mã cho plugin maven-protoc, tôi thấy rằng đây là trường hợp sử dụng được hỗ trợ - plugin sẽ tìm và thu thập và .proto tệp trong các thẻ phụ thuộc và giải nén chúng vào một thư mục tạm thời. Thư mục đó sau đó được thiết lập như là một đường dẫn nhập khẩu để gọi protoc.

Tất cả những gì cần phải xảy ra là dành cho các tập tin .proto được bao gồm trong gói của sự phụ thuộc, mà tôi đã làm bằng cách làm cho nó một nguồn lực:

dự án/A/src/main/nguồn/a.proto

Bây giờ trong các dự án/b/pom.xml, thêm 'a' là một phụ thuộc Maven thường xuyên và chỉ nhập khẩu a.proto từ b.proto như thể nó tồn tại ở địa phương:

b.proto: nhập khẩu "một .proto ";

Điều này không lý tưởng vì tên tệp có thể xung đột giữa các dự án khác nhau nhưng điều này sẽ hiếm khi xảy ra.

+0

Bạn chỉ cần có habin để đưa tệp .prot vào thư mục theo tên mô-đun –

+0

Bạn sẽ làm như thế nào nếu bạn phải nhập tệp proto từ một jar vào một tập tin proto trong dự án làm việc của bạn? – Righto

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