Cách tạo và xuất bản một thư viện Java hữu ích


9

Gần đây tôi đã làm việc trên một lớp Java tạo ra hoán vị cho mỗi danh sách các đối tượng. Trong mọi trường hợp, tôi muốn thư viện này được cung cấp cho công chúng, vì vậy tôi có một số câu hỏi:

  • Hầu hết các thư viện tôi thấy đều có cách đặt tên gói phức tạp này, đặc biệt bao gồm com/ org. Có một quy ước cho những điều này hoặc là một permutationsgói đủ?
  • Có một định dạng cụ thể để xuất bản những? Tôi có nên bao gồm các WAR riêng cho mã nguồn / javadoc không?
  • Tôi có các tệp trên kho GitHub. Tôi đoán tôi có thể phục vụ các tập tin ở đó, nhưng làm cách nào để mọi người tìm thấy repo của tôi?

Quy ước đặt tên gói là miền internet đảo ngược
Daniel Moura

2
Và nếu tôi không có tên miền?
Amir Rachum

1
@Amir: Sau đó tôi nghĩ có lẽ một cái gì đó như amirrachum.util.permutationscó thể là tốt.
Thất vọngWithFormsDesigner

Một cái gì đó khác mà bạn có thể muốn nghĩ về - làm thế nào để bạn muốn cấp phép mã này? Bất cứ ai cũng có thể làm bất cứ điều gì họ muốn với nó? Bạn có muốn nó chỉ được sử dụng trong các dự án FOSS hay không, nếu nó được sử dụng trong phần mềm độc quyền (miễn là chúng ghi có cho bạn)? Xem xét các giấy phép nguồn mở khác nhau ngoài kia (GPL, LGPL, Mozilla, Apache, MIT, BSD) và quyết định loại giấy phép nào bạn muốn sử dụng.
MatrixFrog

Câu trả lời:


9
  • Một cách tiêu chuẩn để xuất bản (ngoài mã nguồn trên GitHub) là có các bản phát hành JAR / WAR chính thức cho Maven Central mà nhiều công cụ xây dựng (Maven, Gradle, Ant / Ivy) sử dụng để đưa vào thư viện làm phụ thuộc. Để làm điều này, cách tốt nhất là trải qua quá trình Nexus .

  • Nó cũng được coi là thân thiện để lưu trữ các JAR / WAR tương tự trên một repo lưu trữ mã như Sourceforge hoặc GitHub.

  • Về mặt tên miền của bạn. Tôi khuyên bạn nên mua Firstnamelastname.net/org/com và sử dụng nó làm sơ đồ đặt tên của bạn (ví dụ với tôi, đó là net.martijnverburg.foobar). Mặt khác, sử dụng tên miền github theo đề xuất của @Daniel Moura là một cách tốt.

  • Để công khai nó, viết blog về nó, twitter về nó, gửi nó cho tin tức hacker, reddit, digg, slashdot, dzone, TSS, javaworld, v.v.

HTH!


+1 cho quy trình Nexus - rất hữu ích trong việc giúp các nhà phát triển khác sử dụng và do đó, hãy xem lại thư viện của bạn
Gary Rowe

3

Nếu bạn đã đẩy mã của mình lên GitHub thì việc chia sẻ thư viện của bạn (jar) thật dễ dàng với JitPack .

Người dùng của bạn sẽ chỉ cần thêm kho lưu trữ vào build.gradle của họ:

repositories {
    mavenCentral()
    maven { url "https://jitpack.io" }
}

và sau đó kho lưu trữ GitHub của bạn dưới dạng phụ thuộc:

dependencies {
    // ...
    compile 'com.github.YourUsername:Repo:Release'
}

JitPack hoạt động như một kho lưu trữ maven tương tự như Maven Central. Điều tuyệt vời là bạn không phải tải lên thư viện của mình. Đằng sau hậu trường, JitPack sẽ kiểm tra mã từ GitHub và biên dịch nó. Khi bạn xuất bản một bản phát hành mới trên GitHub, nó sẽ có sẵn cho người khác sử dụng.

Ngoài ra còn có một hướng dẫn về cách chuẩn bị một dự án và các ví dụ để thêm một nguồn jar.

Không bắt buộc phải có một tên miền để groupId của bạn trở thành com.github.Username. Bạn cũng có thể sử dụng nó để đặt tên gói.


2

Hầu hết các thư viện tôi thấy đều có cách đặt tên gói phức tạp này, đặc biệt bao gồm com / org. Có một quy ước cho những điều này hoặc là một gói hoán vị đủ?

Có những khuyến nghị từ Oracle về cách đặt tên cho các gói của bạn . Lý do cho quy ước đặt tên này là để giảm thiểu trùng lặp. Nếu mọi người chỉ đơn giản sử dụng tên ngắn, đơn giản, nhiều khả năng một dự án sẽ bao gồm hai permutationgói. Nếu một tên lớp giống nhau, sẽ có xung đột đặt tên. Mọi thứ có thể gây nhầm lẫn cho nhà phát triển, nếu không có xung đột đặt tên ngăn cản việc giải quyết các lớp.

Nếu bạn có một tên miền, tôi sẽ đề nghị sử dụng nó. Nếu bạn đang lưu trữ trên một dịch vụ như GitHub hoặc Sourceforge, sử dụng đường dẫn đến dự án của bạn cũng sẽ đủ. Bất kể, hãy rõ ràng để ngăn ngừa xung đột hoặc nhầm lẫn.

Có một định dạng cụ thể để xuất bản những? Tôi có nên bao gồm các WAR riêng cho mã nguồn / javadoc không?

Không có định dạng cụ thể. Ít nhất, nguồn và một kịch bản xây dựng quy ước (Make, Ant, Maven). Thật tuyệt khi có các tệp JAR hoặc WAR được biên dịch trước, nhưng không cần thiết. Một số dự án bao gồm Javadoc trong thư viện, những dự án khác có thể tạo ra hai JAR (một có Javadoc và một không có). Nó cũng có thể là một ý tưởng tốt để đơn giản xuất bản Javadoc của bạn trên Internet nếu giải pháp lưu trữ dự án của bạn cho phép.

Tôi có các tệp trên kho GitHub. Tôi đoán tôi có thể phục vụ các tập tin ở đó, nhưng làm cách nào để mọi người tìm thấy repo của tôi?

Quảng cáo nó. Bắt đầu bằng cách khoe với một vài người bạn. Blog về nó. Chia sẻ một liên kết trên Internet. Tìm ai đó có vấn đề mà họ có thể giải quyết bằng thư viện này (nhưng hãy chắc chắn rằng bạn tiết lộ rằng bạn đã tạo thư viện).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.