Apakah Ant masih dalam "arus utama" untuk pembangunan Java?

14

Kami telah perlahan-lahan mengganti file batch perintah (windows .bat) yang hanya menggelegar kelas yang dikompilasi dalam IDE pengembang, dengan membangun Ant yang lebih komprehensif (yaitu dapatkan dari CVS, kompilasi bersih, jar, arsip, email, dll.)

Saya telah menghabiskan banyak waktu belajar (dan masalah debugging) dengan Ant, jadi saya paling nyaman menggunakannya untuk tugas-tugas ini. Tetapi saya bertanya-tanya apakah Semut masih digunakan secara luas seperti ketika saya pertama kali mulai belajar, atau apakah "dunia telah pindah" ke sesuatu yang lebih baru (dan mungkin lebih licin). (Saya sudah mulai melihat lebih banyak Maven membangun barang yang didistribusikan, yang saya tidak pernah gunakan, misalnya.)

Impor praktis dari pertanyaan ini, adalah apakah saya mendorong pengembang baru untuk mempelajari Semut , atau apakah mereka harus mempelajari sesuatu yang lain untuk pembuatan?

Saya tidak pernah terlalu di atas tren, jadi akan sangat bagus untuk mendengar dari pengembang Java lain apa yang mereka pikir adalah alat membangun terbaik, dan apa yang menurut mereka harus dipelajari oleh pengembang baru.

Sam Goldberg
sumber
Baca semua jawaban di bawah ini dan semuanya hebat! Terima kasih atas wawasan tentang perbaikan apa yang ditawarkan Maven di atas Ant. Saya akan melihat ke Maven.
Sam Goldberg
Sangat sedikit proyek yang cukup sederhana untuk tidak membutuhkan banyak scripting untuk semut. Maven menangani banyak hal ini dengan cara standar.
Semut pada dasarnya adalah skrip shell dalam XML (dan menggunakan perintah Ant alih-alih perintah shell).
user253751
Semut adalah pemborosan waktu yang luar biasa. Bahkan ketika pakar mengerikan itu adalah pilihan yang lebih cerdas. Semut tidak memiliki cara untuk diintegrasikan ke dalam IDE dan proyek Java adalah kekacauan besar file - Anda menghabiskan 30% dari waktu Anda hanya melompat dari file ke file.
bryan hunt
@ Bryanhunt: kami akhirnya menggunakan Maven untuk semua proyek baru. Namun, saya belum menemukan cara yang bagus untuk Maven untuk membuat paket penerapan untuk aplikasi Java. (Tidak masalah untuk menyalin dependensi, mengunggah toples.) Sebagian besar tulisan yang saya baca menjawab bagaimana melakukannya, katakanlah untuk menggunakan plugin Ant. Jadi saya menemukan saya menggunakan Ant untuk menyiapkan hasil akhir dari Maven. Dan tampaknya lebih mudah melakukannya di Ant daripada menggunakan plugin Maven Assembly.
Sam Goldberg

Jawaban:

23

Saya setuju dengan yang lain di sini bahwa Maven tampaknya telah mengambil alih sebagian besar proyek signifikan yang pernah saya lihat.

Sementara Ant sangat fleksibel, file build tidak terstandarisasi, jadi ketika Anda pindah ke proyek atau perusahaan baru, target diberi nama berbeda, file terstruktur berbeda, dependensi antar-target mungkin atau mungkin tidak dibuat, dll.

Dengan Maven, Anda juga mendapatkan manfaat dari tidak harus membawa dependensi biner (saya berbicara tentang botol) di dalam sistem SCM Anda. Banyak alat Java hebat lainnya tahu cara membaca file POM Maven (manfaat dari standardisasi), jadi alat seperti IDE dapat mengatur proyek Maven dengan sangat cepat, dan alat bantu bangunan seperti Jenkins dapat dengan mudah menjalankan pembuatan Maven.

RonU
sumber
13
Saya juga harus menambahkan bahwa menggunakan Maven membuat proyek kami IDE-agnostik, dan jika Anda pernah berada di toko yang memiliki perang IDE, Anda dapat menghargai menghilangkan pertempuran agama ini!
RonU
11

Saya telah bekerja dengan Ant dan dengan Maven. Dalam pengalaman saya, Maven memiliki keunggulan yang sangat kuat atas Ant.

  • Semua proyek yang saya lihat 2 atau 3 tahun terakhir tampaknya menggunakan pakar. Sekitar 3 tahun yang lalu ini membuat saya bertanya-tanya karena versi pakar yang digunakan saat itu (2.0.something) tampaknya sangat tidak dapat diandalkan dan buggy. Namun pada beberapa titik (2.1 atau 2.2 saya tidak ingat) maven menjadi andal dan setelah beberapa waktu menghabiskannya saya telah mengubah pikiran saya menjadi sebaliknya. Sekarang, saya lebih suka terkejut melihat seseorang yang lebih suka semut daripada pakar.

Pada catatan yang kurang positif tentang pakar, pengalaman saya dengan dokumentasinya tidak begitu bagus sejauh ini. Saya pikir saya telah melihat produk dengan dokumentasi lebih buruk daripada pakar tetapi saya tidak ingat yang mana (beberapa perpustakaan CSV kuno iirc).

agas
sumber
2
Entahlah, saya menemukan Referensi Maven cukup baik. Itu tidak sempurna, dan ada sudut gelap tidak berdokumen memang, tapi masih IMHO itu jauh lebih baik daripada rata-rata.
Péter Török
@ PéterTörök right Maven Reference adalah bantuan pertamaku juga. Entah bagaimana, sebagian besar hal yang membuatku khawatir berakhir di sudut-sudut gelap tanpa dokumen ini . Tepatnya saya menemukan sudut-sudut ini lebih "gelap" daripada "tidak berdokumen" - Maksud saya, saya merasa pengetahuan itu ada tetapi saya gagal mengartikannya. Saya tidak tahu, mungkin saya kurang beruntung. Atau mungkin bodoh. Atau mungkin orang-orang Maven hanya kekurangan penulis teknologi yang layak di geng mereka
nyamuk
1
Mengapa, pernahkah Anda melihat proyek sumber terbuka yang memiliki penulis teknologi yang baik? ;-)
Péter Török
@ PéterTörök benar sekali! :) Kemewahan proyek OSS populer adalah bahwa ada banyak orang ahli di sekitar yang "mengganti" penulis dokumen. Bagi saya itulah yang terjadi dengan Maven - selalu ada beberapa guru di sekitar saya yang bisa saya tanyakan tentang hal
nyamuk
3

Kami telah menggunakan Maven selama beberapa tahun. Ini mendukung Ant scripting (seperti Ant mendukung BeanShell), jadi pengetahuan Ant Anda mungkin masih berguna. Maven jauh lebih kuat, tetapi memiliki beberapa persyaratan infrastruktur tambahan (Anda akan ingin server Artifactory atau Nexus menjadi tuan rumah bangunan Anda jika Anda berbagi komponen di antara beberapa proyek). Ini juga sangat berbeda dari Ant, sehingga Anda tidak dapat memanfaatkan banyak pengetahuan yang ada.

TMN
sumber
1

Saya pikir Semut sendiri mati di air; harus menentukan semua dependensi classpath Anda secara manual (tergantung pada pengaturan Anda) terlalu manual dan jauh dari kesalahan. Jika Semut digunakan bersama alat manajemen dependensi, seperti Ivy, maka Ant tetap mempertahankan kekuatannya dan menghilangkan kebutuhan untuk mengelola dependensi Anda secara manual.

Masalah lain dengan Ant ketika dibandingkan dengan Maven adalah kurangnya standarisasi, yang telah disebutkan dalam jawaban lain. Ketika berpindah dari satu proyek ke proyek atau pekerjaan ke pekerjaan, salah satu hal paling menjengkelkan yang saya temukan adalah harus mempelajari standar baru untuk berbagai file Ant. Tujuan konvensi Maven mengenai konfigurasi berarti bahwa dua proyek yang berbeda akan memiliki struktur yang sangat mirip, membuat transisi di antara mereka lebih mudah daripada dengan Ant.

Adapun apakah Ant masih mainstream atau tidak, itu akan tergantung pada lingkungan pengembangan tempat Anda bekerja. Jika proyek tersebut berada di perusahaan kecil atau baru, saya akan membayangkan Maven akan menjadi pilihan alami dan waktu dapat diambil untuk berinvestasi dalam infrastruktur, seperti Artifactory. Namun, perusahaan besar akan menginvestasikan bertahun-tahun dan banyak uang ke infrastruktur Ant mereka (konfigurasi, file build global, dll.) Yang berarti mereka akan kurang tertarik untuk pindah dari teknologi di mana mereka telah menginvestasikan begitu banyak uang.

Richard
sumber
0

Maven telah meningkat selama bertahun-tahun, dan sekarang saya perlu mempelajarinya. Segala sesuatu akan selalu berubah, dan mengetahui bahwa Ant kehilangan posisinya bukanlah hal yang buruk.

Maven mungkin hanya naik dan datang untuk waktu yang singkat, tetapi jika itu membuat pekerjaan kita lebih mudah, maka ada baiknya menginvestasikan waktu untuk belajar.

Jon Shanks
sumber