Saya ingin menanggapi beberapa keluhan yang dibuat di forum ini:
Maven adalah semua-atau-tidak sama sekali. Atau setidaknya sejauh yang saya tahu dari dokumentasinya. Anda tidak dapat dengan mudah menggunakan maven sebagai pengganti semut, dan secara bertahap mengadopsi fitur yang lebih canggih.
Ini tidak benar. Kemenangan besar Maven adalah menggunakannya untuk mengelola dependensi Anda dengan cara yang rasional dan jika Anda ingin melakukannya di maven dan melakukan yang lainnya di semut, Anda bisa. Begini caranya:
<?xml version="1.0" encoding="UTF-8"?>
<project name="foo" basedir="." xmlns:maven="antlib:org.apache.maven.artifact.ant" >
<maven:dependencies verbose="true" pathId="maven.classpath">
<maven:pom id="maven.pom" file="pom.xml" />
</maven:dependencies>
</project>
Anda sekarang memiliki objek classpath bernama 'maven.classpath' yang berisi semua dependensi maven yang ditentukan dalam file pom. Yang Anda butuhkan hanyalah meletakkan jar maven ant tasks di direktori lib semut Anda.
Maven membuat proses build Anda bergantung pada koneksi jaringan Anda.
Proses pengambilan plugin dan dependensi default bergantung pada koneksi jaringan, ya, tetapi hanya untuk build awal (atau jika Anda mengubah dependensi atau plugin yang digunakan). Setelah itu semua toples di-cache secara lokal. Dan jika Anda ingin memaksa koneksi tanpa jaringan, Anda dapat memberitahu maven untuk menggunakan mode offline.
Itu memaksakan struktur yang kaku pada Anda sejak awal.
Tidak jelas apakah ini mengacu pada format file atau masalah 'konvensi versus konfigurasi'. Untuk yang terakhir, ada banyak default yang tidak terlihat seperti lokasi yang diharapkan dari file dan resource sumber java, atau kompatibilitas sumber. Tapi ini bukan kekakuan, ini menempatkan default yang masuk akal untuk Anda sehingga Anda tidak perlu mendefinisikannya secara eksplisit. Semua pengaturan dapat diganti dengan cukup mudah (meskipun untuk pemula mungkin sulit untuk menemukan dalam dokumentasi bagaimana mengubah hal-hal tertentu).
Jika Anda berbicara tentang format file, nah itu tercakup dalam tanggapan untuk bagian selanjutnya ...
Ini berbasis XML sehingga sulit dibaca seperti ANT sebelumnya.
Pertama, saya tidak melihat bagaimana Anda dapat mengeluh bahwa beberapa aspek dari sesuatu 'Tidak lebih baik daripada semut' sebagai pembenaran untuk memiliki reputasi yang buruk. Kedua, saat masih XML, format XML jauh lebih jelas. Lebih jauh, karena begitu jelasnya, jauh lebih mudah untuk membuat editor klien tebal yang masuk akal untuk POM. Saya telah melihat halaman panjang ant membangun skrip yang melompati semua tempat. Editor skrip semut build tidak akan membuatnya lebih enak, hanya daftar panjang tugas yang saling berhubungan yang disajikan dengan cara yang sedikit berbeda.
Karena itu ada beberapa keluhan yang saya lihat di sini yang memiliki atau memiliki beberapa vailiditas, makhluk terbesar
- Dokumentasi buruk / hilang
- Bangunan yang dapat direproduksi
- Integrasi Eclipse buruk
- Bug
Yang mana tanggapan saya ada dua. Pertama, Maven adalah alat yang jauh lebih muda daripada Ant atau Make, jadi Anda harus berharap bahwa ini akan membutuhkan waktu untuk mencapai tingkat kematangan aplikasi tersebut. Kedua, jika Anda tidak menyukainya, perbaiki . Ini adalah proyek open source dan menggunakannya dan kemudian mengeluh tentang sesuatu yang siapa pun dapat membantu memecahkannya tampaknya cukup bodoh bagi saya. Tidak suka dokumentasinya? Berikan kontribusi untuk membuatnya lebih jelas, lebih lengkap, atau lebih mudah diakses oleh pemula.
Masalah build yang dapat direproduksi dibagi menjadi dua masalah, rentang versi dan pembaruan plugin maven otomatis. Untuk pembaruan plugin, kecuali jika Anda memastikan ketika Anda membangun kembali proyek setahun kemudian bahwa Anda menggunakan JDK yang sama persis dan versi Ant yang sama persis, nah ini adalah masalah yang sama dengan nama yang berbeda. Untuk rentang versi, saya sarankan untuk mengerjakan plugin yang akan menghasilkan pom sementara dengan versi terkunci untuk semua dependensi langsung dan transitif dan menjadikannya bagian dari siklus rilis maven. Dengan begitu, pom build rilis Anda selalu merupakan deskripsi yang tepat dari semua dependensi.