Haruskah kita menggunakan Nexus atau Artifactory untuk Maven Repo?

119

Kami menggunakan Maven untuk proses build besar (> 100 modul). Kami telah menyimpan dependensi eksternal kami di kontrol sumber, dan menggunakannya untuk memperbarui repo lokal.

Namun, kami siap untuk beralih ke repo lokal yang dapat menyimpan cache pusat sehingga kami tidak perlu mengunduh semua pihak ketiga secara proaktif (tetapi kami masih dapat memiliki repo lokal untuk ditarik). Selain itu, kami ingin menerbitkan artefak bangunan internal kami dari bangunan malam sehingga pengembang tidak perlu membangun dunia.

Kami sedang mempertimbangkan Nexus dan Artifactory. Apa alasan untuk memilih salah satu dari yang lain? Apakah ada hal lain yang harus kita pertimbangkan?

John Stauffer
sumber
2
Tautan Anda tidak terlalu objektif, inilah tanggapan sisi lain blogs.jfrog.org/2009/01/contrasting-artifactory-and-nexus.html
user58773
Saya pikir Anda harus mempertimbangkan server http biasa seperti Apache atau nginx. Mereka adalah "Teknologi Membosankan" ( mcfunley.com/choose-boring-technology ).
Johan Walles
5
@JohanWalles: lebih seperti "Teknologi yang Tidak Nyaman dan Mengurangi Produktivitas" dalam konteks ini.
Priidu Neemre

Jawaban:

74

Saya tidak tahu tentang Artifactory tetapi berikut adalah alasan saya menggunakan Nexus:

  • Instalasi sederhana yang mati (dan sejak 1.2, peningkatan sederhana yang mati juga)
  • UI web yang sangat bagus
  • Mudah dirawat, hampir tidak ada biaya administrasi
  • Memberi Anda RSS feed dari artefak rusak dan kesalahan yang baru saja dipasang
  • Itu dapat mengelompokkan beberapa repositori sehingga Anda dapat mencerminkan beberapa sumber tetapi hanya membutuhkan satu atau dua entri di settings.xml Anda
  • Menerapkan dari Maven berhasil di luar kotak (tidak perlu peretasan WebDAV, dll).
  • gratis
  • Anda dapat mengarahkan jalur akses (misalnya, beberapa pom.xml yang rusak memerlukan "abc" dari "xxx"). Alih-alih menambal POM, Anda dapat memperbaiki bug di Nexus dan mengarahkan permintaan ke tempat artefak sebenarnya berada.
Aaron Digulla
sumber
3
Nexus memiliki UI web yang bagus untuk membuat pekerjaan terjadwal secara teratur yang dapat membersihkan SNAPSHOTS. Artifactory belum memiliki ini (belum).
HDave
118

Saya yakin jika Anda hanya berbicara tentang menyimpan binari dari " mvn deploy", keduanya akan baik-baik saja.

Kami menggunakan Artifactory dengan sangat ekstensif dengan semua peningkatan di sepanjang jalan. Banyak proyek, banyak snapshot diterapkan dan repositori eksternal diproksikan. Tidak ada satupun masalah. Saya merasa sulit untuk menjelaskan bagaimana orang lain mengalami masalah dengan DB-nya, pengindeksan, atau hal lainnya. Hal seperti itu tidak pernah terjadi pada kami. Selain itu, Artifactory memungkinkan untuk menyimpan data pada disk dan hanya menggunakan DB untuk menyimpan metadata, itu cukup fleksibel ( lihat lebih lanjut di sini ).

Apa yang membuat aplikasi tersebut sangat berbeda adalah pendekatannya terhadap integrasi dengan alat dan teknologi build lainnya. Nexus dan Sonatype cukup terkunci di Maven dan m2eclipse. Mereka mengabaikan hal lain dan baru-baru ini mulai mengerjakan integrasi Hudson milik mereka sendiri (lihat webinar Maven 3 mereka ). EDIT: Ini tidak berlaku lagi sejak 2017 Nexus memberikan dukungan yang jauh lebih besar untuk alat pembangunan lainnya. Akhir Pengeditan

Artifactory menyediakan integrasi Hudson, TeamCity dan Bamboo yang mengagumkan , dan Gradle / Ivy dukungan. Jadi, meskipun Nexus tidak memberi Anda apa pun setelah Anda keluar dari "zona nyaman" Sonatype (Maven, m2eclipse), Artifactory merangkul dan berkolaborasi dengan semua alat build utama.

Faktanya, kemampuan untuk menerapkan artefak bangunan dari Hudson, ketika pekerjaan telah selesai, dan bukan oleh " mvn deploy" adalah perbedaan besar: Plugin Artifactory Hudson membuat penerapan semua artefak seperti atom sekaligus , hanya jika pekerjaan build selesai dengan sukses. " mvn deploy" berjalan setelah setiap modul dan dapat menerapkan sebagian set artefak jika pekerjaan pembangunan gagal di tengah. Menerapkan dari Maven saat penyelesaian modul dan bukan dari server versi saat penyelesaian tugas adalah hal yang buruk untuk dilakukan.

Seperti yang Anda lihat, Artifactory berpikir "di luar kotak" sementara Nexus berpikir "di dalam kotak" dan hanya peduli tentang artefak Maven dan Maven.

Hal lain yang membuat Artifactory lebih mudah diakses adalah solusi Artifactory Online berbasis cloud mereka . Untuk sekitar $ 80 sebulan Anda memiliki contoh Artifactory Anda sendiri, tidak perlu mendedikasikan server apa pun untuk itu.

Artifactory memiliki REST API yang sederhana dan lugas , tidak tahu cara kerjanya untuk Nexus. Edit Nexus juga memiliki REST API yang dapat Anda gunakan dengan mudah juga.

Untuk meringkas, untuk penyimpanan dasar artefak Maven, saya pikir keduanya baik-baik saja. Tetapi sementara Nexus berhenti di sana hanya menjadi "manajer repositori Maven", Artifactory terus berlanjut, menjadi "penyimpanan Binari" umum untuk binari apa pun, dari alat build dan server CI apa pun.

Evgeny Goldin
sumber
9
Maaf, tapi saya mencium bau FUD di sini. Nexus jelas tidak "terkunci pada Maven dan m2eclipse", itu terintegrasi dengan baik dengan Jenkins, TeamCity dan Bamboo. Ini memiliki REST API yang sederhana dan lugas; setiap fitur Nexus ditampilkan sebagai titik akhir REST. Tidak benar untuk mengatakan bahwa Nexus "hanya peduli tentang artefak Maven dan Maven"; itu juga mendukung .Net (NuGet), Gradle / Ivy, OSGI, dan dapat menjadi tuan rumah repositori Yum RPM. Dalam hal penyimpanan artefak, tar, zip, rar, par disertakan bersama dengan jenis arsip java standar.
RCross
25
Teman, tanggapan itu diposting 4 tahun yang lalu :) Ini bukan tentang Maven lagi? Bagus untuk itu!
Evgeny Goldin
3
@EvgenyGoldin Tidak membuat komentarnya kurang relevan (kecuali bagian FUD ^^).
OddDev
4
Sekarang posting ini berumur tujuh tahun, dan REST apis kurang lebih wajib dengan alat, Nexus tampaknya masih mengisap ini. Menggunakan Nexus3 ada sisa API pada dasarnya adalah rpc; Anda harus mengunggah sedikit skrip untuk menjalankan apa yang ingin Anda lakukan. Artifactory di sisi lain tampaknya mengekspos API yang dipikirkan dengan baik yang memiliki dokumentasi yang baik.
thecoshman
27

Artifactory mendukung kedua file sistem dan backends penyimpanan database. Penyimpanan berbasis checksum dan biner identik disimpan hanya sekali, tidak peduli berapa kali mereka muncul di repo, yang membuat Artifactory lebih efisien dalam penyimpanan. Memindahkan dan menyalin juga sangat murah karena arsitektur ini (di Nexus tidak ada REST untuk dipindahkan / disalin - Anda harus memindahkan barang di sistem file, lalu menjalankan tindakan korektif pada repo untuk memberi tahu bahwa konten telah berubah).

Pembeda penting lainnya adalah Artifactory memiliki integrasi unik dengan Hudson dan TeamCity untuk menangkap informasi tentang artefak yang diterapkan, dependensi yang terselesaikan, dan data lingkungan yang terkait dengan proses build, yang menyediakan keterlacakan build penuh.

Yoav Landman
sumber
1
Artifactory juga mendukung persistensi S3.
Tim Ferrell
@TimFerrell, bukan tidak benar, tetapi dengan harga yang sangat mahal untuk sebagian besar toko tempat saya biasanya bekerja.
Sander Verhagen
21

Artifactory menyimpan artefak dalam database, yang berarti jika terjadi kesalahan, semua artefak Anda akan hilang. Nexus menggunakan file datar untuk artefak berharga Anda sehingga Anda tidak perlu khawatir semuanya hilang.

Brian Fox
sumber
3
Itulah yang membuat perbedaan bagi kami juga. Saya membayangkan itu sebagian besar hanya paranoia, tetapi menghibur mengetahui bahwa akan mudah untuk memeriksa sistem kapan saja.
Jeremy Huiskamp
4
Kami berencana untuk beralih dari Artifactory ke Nexus karena ini.
Kariem
2
+1 dari korban korupsi lainnya; Saya telah menggunakan Archiva dan Nexus sejak saat itu dan keduanya tampak cukup solid.
SimonJ
73
Jawaban ini sudah ketinggalan zaman. Artifactory sekarang dapat dikonfigurasi untuk menyimpan objek pada sistem file.
M. Dudley
37
Selama saya menggunakan Artifactory, ia memiliki dukungan sistem file untuk artefak yang sebenarnya. Tetapi saya tetap menggunakan database karena server database utama kami direplikasi dan dicadangkan. Saya tidak melihat bagaimana penyimpanan sistem file secara inheren lebih aman daripada database. Tidak ada yang melawan Nexus, hanya mencoba menjernihkan ini.
Joshua Davis
9

Jika Anda memerlukan fitur "Pro" dari salah satunya (mis. Repos Staging, promosi artefak, NuGet), maka Anda perlu mempertimbangkan model harga yang berbeda, yang ditampilkan di situs web mereka.

Singkatnya:

  • Artifactory Pro
    • Anda membayar per server
    • Anda dapat membayar lebih untuk peningkatan jam layanan
  • Nexus Pro
    • Anda membayar per kursi , yaitu berapa banyak pengembang yang mengunduh artefak
    • layanan dukungan hanya pada Sen-Jum 0800-2000 ET, apa pun yang Anda bayarkan

Tidak peduli berapa banyak pengguna yang Anda miliki, Nexus Pro menawarkan layanan dukungan yang secara luas setara dengan "Paket Nilai Perak" Artifactory $ 7.450 / tahun.

$ 7.450 / tahun akan membelikan Anda sekitar 67 kursi Nexus Pro (1-50 @ $ 108, sisanya @ $ 120).

Pada harga dan dukungan saja, Nexus Pro masuk akal sampai Anda mendapatkan 67 pengguna, di mana Artifactory menjadi opsi yang lebih murah.

Jika Anda melakukan semua dukungan di rumah; namun, poin ajaib itu adalah sekitar 23 pengguna (penawaran dukungan paling dasar dari Artifactory adalah $ 2.750 / tahun).

RCross
sumber
8

Saya membuat beberapa penelitian baru-baru ini tentang Artifactory 2 dan Nexus 1.3. Saya akan mencantumkan di sini perbedaan utama yang saya temukan:

  • Artifactory menyimpan metadata dan secara opsional file di DB, Nexus menulis langsung ke sistem file. Ada kelebihan. dan kontra. untuk setiap pendekatan. DB mendukung transaksi, sedangkan dalam file tersimpan FS dapat diakses secara langsung.
  • Artifactory memiliki persyaratan sistem yang lebih tinggi terutama untuk ruang disk.
  • Artifactory memiliki dukungan LDAP, sedangkan Nexus hanya memilikinya dalam versi berbayar. Di sisi lain, plugin LDAP gratis untuk Nexus tersedia di kode Google.

Perbandingan terlengkap: http://binary-repositories-comparison.github.io/

Sergey
sumber
Sebenarnya Artifactory sekarang GPL.
Brian Fox
5
Nexus OSS memiliki dukungan Ldap untuk beberapa rilis sekarang.
Brian Fox
1
Dukungan artifaktori untuk grup LDAP masih merupakan fitur pro: jfrog.com/confluence/display/RTF/LDAP+Groups
Steven Magana-Zook
1
Pembaruan Juli 2015: Codehaus sudah mati sekarang, jadi matriksnya bermigrasi ke binary-repositories-comparison.github.io
JBaruch
7

Anda harus menggunakan Artifactory Versi terbarunya adalah lompatan nyata Anda dapat mencadangkan secara bertahap repositori Anda, yang berarti Anda dapat memiliki semua artefak Anda disimpan dan dipelihara. Ini memiliki antarmuka web yang mudah digunakan dan sangat mudah diatur Saya sangat menikmatinya keluar versi barunya 2.0


sumber
5

Dari sudut pandang pelajar, saya mencatat beberapa perbedaan spesifik di antara keduanya.

  1. Penyebaran Sonatype .war tidak didukung di server aplikasi Jboss pada saat itu, meskipun dijalankan di bawah Tomcat.
  2. Sonatype tidak menawarkan saya Amazon Machine Image (AMI), saat ini, yang dapat saya uji dengan cepat.
  3. AMI Artifactory disediakan oleh Bitnami dan hanya membutuhkan beberapa menit untuk berdiri dan beberapa menit lagi untuk mengkonfigurasi, mungkin beberapa puluh menit tergantung pada apa yang Anda coba capai.
  4. Artifactory menawarkan Artifactory versi SaaS di cloud sehingga Anda dapat fokus untuk menyelesaikan berbagai hal daripada infrastruktur.
  5. Saya tidak memiliki pengalaman dengan Nexus tetapi saya menemukan Artifactory sangat intuitif dan mudah dikonfigurasi, setidaknya pada awalnya.
  6. Ditambahkan - Saya perhatikan bahwa Panduan Pengguna Artifactory, yang mungkin OK untuk pro berpengalaman, agak ringan untuk beberapa penjelasan mendalam. Misalnya, memulai, membuka ritsleting dan kemudian menambahkan Repositori, katakanlah RedHat's Jboss EAP Enterprise Repo. Semua berjalan dengan baik tetapi kemudian ketika saya mencoba untuk melihat artefak yang diimpor laporan Artifactory nol artefak? Tidak ada kesalahan atau peringatan jadi saya sekarang mencari penjelasan. Apakah ini normal atau tidak? Penjelasan sederhana di dokumen dapat dengan cepat menunjukkan kepada seseorang ke arah yang benar. Menjadi kontributor yang baik, saya menambahkan komentar ini ke proyek untuk kepentingan pemula lainnya.
pengguna3175893
sumber
3

Terlepas dari semua politik / agama, perizinan membuat perbedaan bagi beberapa organisasi.

Nexus adalah GPL sekarang AGPLv3 dan sekarang Lisensi Publik Eclipse (EPL) .

Artifactory adalah LGPLv3 berlisensi Apache sejak versi 2.1 produk.

Anda mungkin juga ingin mempertimbangkan Archiva , hanya untuk perbandingan. Ini berlisensi Apache 2.0.

Zac Thompson
sumber
5
Wah, ini troll. Apakah fakta bahwa Linux adalah GPL menghalangi organisasi untuk menggunakannya? Ada perbedaan antara memasukkan alat ke dalam program dan menggunakannya .
Tim O'Brien
1
Saya tidak bermaksud untuk mengerjai, tapi saya menghargai maksud Anda. Saya telah menghapus superlatif dari teks.
Zac Thompson
4
@tobrien: FWIW, beberapa organisasi (termasuk organisasi saya) sangat berhati-hati ketika mereka menggunakan perangkat lunak GPL, takut terkena hukum. Saya tidak ingin membahas (kurangnya) kebijaksanaan kebijakan semacam itu - saya kira kami akan setuju sepenuhnya. Hanya menunjukkan bahwa bagi beberapa orang, itu penting.
Zac Thompson
1
Pada 2.1, Artifactory adalah LGPL.
Brian Fox
1
@Zac @ user145026 Apakah Anda menautkan kode Anda ke perpustakaan Nexus ?? Jika tidak, saya tidak mengerti mengapa lisensi GPL menjadi masalah.
Pascal Thivent
2

Saya melihat bahwa penggunaan Nexus berkembang, sementara penggunaan Artifcatory secara umum tetap datar.

masukkan deskripsi gambar di sini

Gambar diambil dari sini http://blog.sonatype.com/2014/11/42000-nexus-repository-managers-and-growing/

Ada juga perbandingan matriks http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix

rofrol.dll
sumber
3
1. Gambar ini tidak akurat, karena hanya mengandalkan panggilan Maven Central. Ada unduhan di luar Maven Central. 2. Codehaus sudah mati sekarang, matriks dimigrasikan ke binary-repositories-comparison.github.io
JBaruch
Bagus. Apakah Anda memiliki gambaran yang lebih baik?
rofrol
Anda dapat menemukan beberapa nomor di sini .
JBaruch
1
Bias terhadap Nexus, Bias terhadap jfrog - Saya tidak akan mempercayai kumpulan angka mana pun.
Kyle Wiering
-2

Baik Artifactory dan Nexus memiliki set fitur yang kurang lebih mirip tetapi dukungan LDAP Artifactory membuatnya lebih menarik dibandingkan Nexus. Meskipun Nexus juga memiliki dukungan LDAP tetapi dalam versi berbayar :-(

Vinod Singh
sumber
1
Ada plugin LDAP open source untuk Nexus di kode google.
Brian Fox
3
Dukungan LDAP sekarang ada dalam versi gratis Nexus, sejak 1.5.0
David Roussel
-2

Hmmm ... pengalaman saya dengan artifactory sangat buruk ... tapi saya relatif pemula jadi ambillah dengan sebutir garam. Keluhan saya secara keseluruhan adalah bahwa file jar yang baru-baru ini diunggah ke Artifactory tampaknya tidak langsung diindeks - seperti dalam beberapa jam - dan sepertinya tidak ada cara yang baik untuk memaksanya. Saya telah mencoba berbagai hal yang tampaknya berhasil, tetapi tidak. Saya telah bekerja dengan m2eclipse, menambahkan dependensi ke proyek yang saya ubah dari semut. Ketika saya mencoba menambahkan toples yang baru saja saya tambahkan ke artifactory, saya berharap itu muncul sebagai pilihan di pemilih tetapi ternyata tidak.

seorang rekan kerja memberi tahu saya bahwa mereka telah menginstal nexus dan sejauh ini mereka menyukainya ... tetapi saya belum dapat menjaminnya. Saya akan menginstalnya di komputer Linux segera setelah TI menemukan saya.

pengguna494078
sumber
3
Anda mengacu pada indeks Nexus yang diunduh dan digunakan oleh IDE, dalam kasus Anda - oleh plugin m2eclipse. Indeks ini diunduh secara berkala ke klien dan tidak dimaksudkan untuk digunakan pada setiap penerapan. Artifactory memungkinkan Anda menjadwalkan pembaruan indeks ini atau memaksanya. FYI, indeks yang digunakan oleh pencarian Artifactory (UI / REST) ​​berbeda dan diperbarui segera dan secara atomik sebagai bagian dari penerapan artefak baru. Alat seperti IntelliJ memanfaatkan ini dengan menjalankan pencarian pada repositori daripada indeks cache lokal, menggunakan REST API dari Artifactory.
Yoav Landman