Mencari tahu dependensi paket benar-benar tidak sulit. Anda jarang melakukannya. Mungkin sekali selama pengaturan proyek dan beberapa lagi selama peningkatan. Dengan maven, Anda akan akhirnya memperbaiki dependensi yang tidak cocok, pom yang ditulis dengan buruk, dan melakukan pengecualian paket.
Tidak sulit ... untuk proyek mainan. Tetapi proyek yang saya kerjakan memiliki banyak, sangat banyak, dari mereka, dan saya sangat senang mendapatkannya secara transitif, untuk memiliki skema penamaan standar untuk mereka. Mengelola semua ini secara manual dengan tangan akan menjadi mimpi buruk.
Dan ya, kadang-kadang Anda harus bekerja pada konvergensi dependensi. Tapi pikirkan dua kali, ini tidak melekat pada Maven, ini melekat pada sistem yang menggunakan dependensi (dan saya berbicara tentang dependensi Java secara umum di sini).
Jadi dengan Ant, Anda harus melakukan pekerjaan yang sama kecuali Anda harus melakukan semuanya secara manual: meraih beberapa versi proyek A dan dependensinya, meraih beberapa versi proyek B dan dependensinya, mencari tahu sendiri versi persis apa yang mereka gunakan, memeriksa bahwa mereka tidak tumpang tindih, memeriksa bahwa mereka tidak kompatibel, dll. Selamat datang di neraka.
Di sisi lain, Maven mendukung manajemen dependensi dan akan mengambilnya secara transitif untuk saya dan memberi saya alat yang saya butuhkan untuk mengelola kompleksitas yang melekat pada manajemen dependensi : Saya dapat menganalisis pohon dependensi, mengontrol versi yang digunakan dalam dependensi transitif, mengecualikan beberapa dari mereka jika diperlukan, mengontrol konvergensi lintas modul, dll. Tidak ada keajaiban. Tetapi setidaknya Anda memiliki dukungan.
Dan jangan lupa bahwa manajemen ketergantungan hanya sebagian kecil dari apa yang ditawarkan Maven, ada lebih banyak (bahkan tidak menyebutkan alat-alat lain yang terintegrasi dengan baik dengan Maven, misalnya Sonar ).
Siklus FIX-COMPILE-DEPLOY-DEBUG yang lambat, yang membunuh produktivitas. Ini keluhan utama saya. Anda membuat perubahan, Anda harus menunggu untuk membangun pakar untuk menendang dan menunggu untuk digunakan. Tidak ada penyebaran panas sama sekali.
Pertama, mengapa Anda menggunakan Maven seperti ini? Bukan saya. Saya menggunakan IDE saya untuk menulis tes, kode sampai lulus, refactor, menyebarkan, menyebarkan panas dan menjalankan build Maven lokal ketika saya selesai, sebelum melakukan, untuk memastikan saya tidak akan merusak build yang berkelanjutan.
Kedua, saya tidak yakin menggunakan Ant akan membuat segalanya lebih baik. Dan menurut pengalaman saya, pembuatan Maven modular menggunakan dependensi biner memberi saya waktu pembuatan yang lebih cepat daripada build Ant monolitik biasa. Pokoknya, lihat Maven Shell untuk siap (kembali) menggunakan lingkungan Maven (yang luar biasa).
Jadi pada akhirnya, dan saya minta maaf untuk mengatakannya, bukan Maven yang benar-benar membunuh produktivitas Anda, melainkan Anda menyalahgunakan alat Anda. Dan jika Anda tidak senang dengan itu, apa yang bisa saya katakan, jangan menggunakannya. Secara pribadi, saya menggunakan Maven sejak 2003 dan saya tidak pernah melihat ke belakang.