2014-06-05 29 views
7

Tôi đang thiết lập dự án Java mới trên GitHub và tôi sẽ có một số thư viện Apache Commons làm phụ thuộc.Phụ thuộc Jar trong GitHub

Thực tiễn tốt nhất để thiết lập dự án cần các tệp jar đó là gì? Tôi có nên tải các phụ thuộc vào kho lưu trữ GitHub của tôi (xấu xí) không? Hoặc use a Maven-like tool for that?

Hoặc có cách nào để liên kết tệp trong kho lưu trữ git khác không? Apache provides git repositories for they libraries. Chúng chỉ đọc, nhưng tôi là o.k. với điều đó, vì tôi chỉ muốn hãy sử dụng các lọ. Điều xấu là chúng chứa tất cả các nguồn, và tôi chỉ quan tâm đến lọ đã biên dịch. It seems chúng tôi không thể git submodule chỉ là một tệp.

Trả lời

5

Hai cách tiếp cận là:

  • declarativedựa trên thành phần, nơi bạn khai báo (mô tả) những gì các thành phần (lọ, exe, mã nhị phân khác), bạn cần cho dự án của bạn để (biên dịch , thực thi, triển khai, v.v.) và bạn sử dụng công cụ của bên thứ ba (như Maven/Nexus) để mang các thành phần đó theo yêu cầu.
    Vì vậy, chúng không được phiên bản trong repo của bạn. Chúng được khai báo/mô tả (như trong tệp pom.xml, nếu bạn sử dụng Nexus)
    Xem thêm "Difference between Git and Nexus?".

  • bao gồmhệ thống dựa trên, nơi bạn hoàn thành dự án của bạn với các nguồn dự án/mã nhị phân khác, để có được trong repo tất cả mọi thứ, bạn cần ngay sau khi bước bản sao (không cần phải gọi một thứ ba công cụ của bên hoặc làm bất cứ điều gì: mọi phần khác của hệ thống của bạn trong đó).
    Với Git, đặc biệt nếu những "bộ phận khác" nằm trong repo git (như apache libs one), thì bạn sẽ khai báo các repo phụ đó là submodules của repo chính của bạn.
    Bằng cách đó, tất cả những gì bạn giữ trong repo chính là special entry (gitlink, mode 160000) tham chiếu đến một SHA1 cụ thể của một repo khác (nhưng bạn có thể thực hiện submodule follow a branch too, giống như svn bên ngoài).
    Và với sparse checkouts in submodules (như trong this example), bạn thậm chí có thể cập nhật các mô-đun này để họ chỉ kiểm tra một phần của repo bạn muốn (như chỉ các lọ, không phải các nguồn).

Lưu ý rằng bạn không được phép lưu trữ bất kỳ giao hàng nào bạn sẽ sản xuất (như bình của riêng bạn) trong kho lưu trữ GitHub của bạn.

Bạn có thể liên kết các phân phối đó với GitHub releases.

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