Saat ini saya sedang dalam proses memindahkan beberapa proyek dari Ant ke Maven. Sesuai dengan saya, saya ingin menggunakan konvensi yang mapan untuk menemukan groupId
dan artifactId
, tetapi saya tidak dapat menemukan konvensi terperinci (ada beberapa, tetapi mereka tidak membahas poin yang saya ingin tahu).
Ambil contoh proyek ini, pertama paket Java: com.mycompany.teatimer
Pengatur waktu teh sebenarnya adalah dua kata, tetapi konvensi penamaan paket Java melarang penyisipan garis bawah atau tanda hubung, jadi saya menulis semuanya bersama-sama.
Saya memilih yang groupId
identik dengan ID paket karena saya pikir itu ide yang bagus. Apakah itu?
Akhirnya, saya harus memilih artifactId
, yang saat ini saya pilih teatimer
. Tapi ketika saya melihat proyek-proyek lain Maven, mereka menggunakan tanda hubung untuk membagi kata-kata dalam artifactId
s, seperti ini: tea-timer
. Tapi itu memang terlihat aneh ketika digabungkan ke groupId
: com.mycompany.teatimer.tea-timer
.
Bagaimana Anda melakukan ini?
Contoh lain:
Nama paket: com.mycompany.awesomeinhouseframework
groupId
: com.mycompany.awesomeinhouseframework
(?)
artifactId
: awesome-inhouse-framework
(?)
sumber
Jawaban:
Konvensi Anda tampaknya masuk akal. Jika saya mencari kerangka kerja Anda di repo Maven, saya akan mencari
awesome-inhouse-framework-x.y.jar
dicom.mycompany.awesomeinhouseframework
direktori grup. Dan saya akan menemukannya di sana sesuai dengan konvensi Anda.Dua aturan sederhana bekerja untuk saya:
sumber
Keanehan itu sangat subyektif, saya hanya menyarankan untuk mengikuti rekomendasi resmi:
sumber
package
? Apa perbedaannya dengan groupId?Pertimbangkan yang berikut untuk membangun aplikasi Maven dasar pertama :
groupId
artifactId
version
sumber
com.my.company.project
sebagaigroupId
ataucom.client.company.project
?Namun, saya tidak setuju dengan definisi resmi dari Panduan untuk memberi nama konvensi pada groupId, artifactId, dan versi yang mengusulkan groupId harus dimulai dengan nama domain terbalik yang Anda kontrol.
com
berarti proyek ini milik perusahaan, danorg
berarti proyek ini milik organisasi sosial. Ini baik-baik saja, tetapi untuk domain aneh seperti xxx.tv, xxx.uk, xxx.cn, tidak masuk akal untuk memberi nama groupId dimulai dengan "tv.", "Cn.", GroupId harus memberikan informasi dasar dari proyek daripada domain.sumber
myuser
dan repositori Anda dipanggilmyrepo
, maka cukup gunakan nama paketcom.github.myuser.myrepo
. Itu gratis dan masih unik.Pertimbangkan ini untuk mendapatkan file jar yang sepenuhnya unik:
sumber