Cara membuat dan menerbitkan perpustakaan Java yang bermanfaat

9

Saya baru-baru ini bekerja pada kelas Java yang menghasilkan permutasi per daftar objek. Bagaimanapun, saya ingin perpustakaan ini ditawarkan kepada publik, jadi saya punya beberapa pertanyaan:

  • Kebanyakan perpustakaan yang saya lihat memiliki penamaan paket yang rumit ini, khususnya termasuk com/ org. Apakah ada konvensi untuk ini atau permutationspaket cukup?
  • Apakah ada format khusus untuk menerbitkan ini? Haruskah saya menyertakan PERANG terpisah untuk kode sumber / javadoc?
  • Saya punya file di repositori GitHub. Saya kira saya dapat melayani file di sana, tetapi bagaimana saya membuat orang menemukan repo saya?
Amir Rachum
sumber
The konvensi untuk paket penamaan domain internet terbalik
Daniel Moura
2
Dan jika saya tidak memiliki domain?
Amir Rachum
1
@ Amir: Kalau begitu saya pikir mungkin sesuatu seperti amirrachum.util.permutationsmungkin baik.
FrustratedWithFormsDesigner
Hal lain yang mungkin ingin Anda pikirkan - bagaimana Anda ingin melisensikan kode ini? Adakah yang bisa melakukan apa pun yang mereka inginkan? Apakah Anda ingin hanya digunakan dalam proyek-proyek FOSS atau apakah Anda setuju jika digunakan dalam perangkat lunak berpemilik (asalkan mereka menghargai Anda)? Lihatlah berbagai lisensi sumber terbuka di luar sana (GPL, LGPL, Mozilla, Apache, MIT, BSD) dan putuskan mana yang ingin Anda gunakan.
MatrixFrog

Jawaban:

9
  • Cara standar untuk menerbitkan (terlepas dari kode sumber di GitHub) adalah memiliki rilis JAR / WAR resmi ke Maven Central yang banyak digunakan oleh alat (Maven, Gradle, Ant / Ivy) untuk membuat perpustakaan sebagai ketergantungan. Untuk melakukan ini, cara terbaik adalah melalui proses Nexus .

  • Juga dianggap ramah untuk meng-host JAR / WAR yang sama pada repo hosting kode seperti Sourceforge atau GitHub.

  • Dalam hal domain Anda. Saya sarankan Anda membeli firstnamelastname.net/org/com dan menggunakannya sebagai skema penamaan Anda (misalnya bagi saya itu net.martijnverburg.foobar). Kalau tidak menggunakan domain github seperti yang disarankan oleh @Daniel Moura adalah yang baik.

  • Untuk mempublikasikannya, blog tentang hal itu, berkicau tentang hal itu, kirimkan ke berita hacker, reddit, digg, slashdot, dzone, TSS, javaworld dll

HTH!

Martijn Verburg
sumber
+1 untuk proses Nexus - sangat berguna untuk membuat pengembang lain menggunakan, dan karenanya meninjau, perpustakaan Anda
Gary Rowe
3

Jika Anda telah mendorong kode Anda ke GitHub maka berbagi pustaka (toples) Anda dengan JitPack mudah .

Pengguna Anda hanya perlu menambahkan repositori ke build.gradle mereka:

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

dan kemudian repositori GitHub Anda sebagai dependensi:

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

JitPack bertindak sebagai tempat penyimpanan mirip dengan Maven Central. Yang menyenangkan adalah Anda tidak perlu mengunggah perpustakaan Anda. Di balik layar, JitPack akan memeriksa kode dari GitHub dan mengompilasinya. Saat Anda menerbitkan rilis baru di GitHub, tersedia untuk digunakan orang lain.

Ada juga panduan tentang cara menyiapkan proyek dan contoh-contoh untuk menambahkan toples sumber.

Tidak perlu memiliki nama domain sehingga groupId Anda menjadi com.github.Username. Anda juga bisa menggunakannya untuk penamaan paket.

Andrejs
sumber
2

Sebagian besar perpustakaan yang saya lihat memiliki penamaan paket yang rumit ini, khususnya termasuk com / org. Apakah ada konvensi untuk ini atau apakah paket permutasi cukup?

Ada rekomendasi dari Oracle tentang cara memberi nama paket Anda . Alasan konvensi penamaan ini adalah untuk meminimalkan duplikat. Jika setiap orang hanya menggunakan nama pendek dan sederhana, maka kemungkinan besar proyek akan menyertakan dua permutationpaket. Jika satu nama kelas sama, akan ada konflik penamaan. Hal-hal dapat membingungkan bagi pengembang, jika tidak ada konflik penamaan yang mencegah resolusi kelas.

Jika Anda memiliki nama domain, saya sarankan menggunakan itu. Jika Anda menggunakan layanan seperti GitHub atau Sourceforge, menggunakan jalur untuk proyek Anda sudah cukup. Apapun, jelaslah untuk mencegah konflik atau kebingungan.

Apakah ada format khusus untuk menerbitkan ini? Haruskah saya menyertakan PERANG terpisah untuk kode sumber / javadoc?

Tidak ada format khusus. Paling tidak, sumber dan konvensi membangun skrip (Make, Ant, Maven). Sangat menyenangkan memiliki JAR atau WAR yang telah dikompilasi, tetapi tidak penting. Beberapa proyek termasuk Javadoc di perpustakaan, yang lain mungkin menghasilkan dua JAR (satu dengan Javadoc dan satu tanpa). Mungkin juga merupakan ide bagus untuk hanya mempublikasikan Javadoc Anda di Internet jika solusi hosting proyek Anda memungkinkan.

Saya punya file di repositori GitHub. Saya kira saya dapat melayani file di sana, tetapi bagaimana saya membuat orang menemukan repo saya?

Iklankan itu. Mulailah dengan memamerkannya kepada beberapa teman. Blog tentang itu. Bagikan tautan di Internet. Temukan seseorang yang memiliki masalah yang dapat mereka pecahkan dengan menggunakan perpustakaan ini (tetapi pastikan Anda mengungkapkan bahwa Anda membuat perpustakaan).

Thomas Owens
sumber