Maven teoride ve pratikte ne yapar? Ne zaman kullanmaya değer? [kapalı]


156

Sadece pratik yapmak için bir Java projesi başlatmak üzereyim. Maven hakkında okudum, ama ne zaman kullanılması gerektiğini anlamıyorum.

Bana bazı pratik ipuçları verebilir misiniz? Maven çok yardımcı oluyor mu? Maven aslında projem için ne yapıyor?


Hej, Maven, Spring ve Roo hakkındaki bu soruma bir bakın . Eclipse ile çalışırken ve geliştirme süresini hızlandırmak için Maven'i çok kullandım. Ancak bazı sorunlar var. Maven ile birlikte Java ek açıklama sistemini anlamanız gerektiğini düşünüyorum. Ama ben bağlantılı soruya bir göz atın ..
mm24

@ArtB, Maven'in ne olduğu hakkında iyi bir açıklama yapar. Ancak, cevabına yaptığım yorumda söylediğim gibi, onu kullanmanız gerektiğini düşünmüyorum. Bir derleme aracı istiyorsanız Gradle'ı kullanın. İndirin, kurun, sonra projenizde build.gradlesadece bir satır söyleyen bir dosya oluşturun apply plugin: 'java'. Kaynak kodunuzun olağan yerde olduğu varsayıldığında ( src/main/java, birim testleri src/test/java), şimdi kodunuzu oluşturabilir, test edebilir ve paketleyebilirsiniz gradle build. Kolay!
Tom Anderson

2
Gradle'ı kullanmak için Groovy'yi öğrenmeniz gerekecek ve Maven'i kullanarak projeyle kesinlikle karşılaşacaksınız , bu yüzden hala öğrenmeye değer. Ayrıca Maven'i anlamak, ondan sonra gelen diğer araçların daha kolay anlaşılmasını sağlayacaktır.
Kızak

Maven'in Java ek açıklamaları ile ne ilgisi var?
Kızak

1
Gradle için +1, sadece java geliştiricileri için eve daha yakın olmakla kalmaz, maven eserlerini yeniden kullanabilir ve standart olmayan yapıları kolayca yapabilir stackoverflow.com/questions/1163173/…
Kalpesh Soni

Yanıtlar:


183

Bu ne yapar

Maven bir "derleme yönetim aracı" dır, .javadosyalarınızın nasıl derleneceğini .class, .jar(veya .warveya .ear) dosyalara nasıl paketleneceğini , araçlarla işleneceğini (ön / gönderi), yönetiminizi CLASSPATHve diğer tüm gerekli görevleri tanımlamak içindir . projenizi oluşturun. C / C ++ ' da Apache Ant veya Gradle veya Makefiles'a benzer , ancak gerekli kütüphaneleri indirip yüklemek gibi diğer ortak görevleri dahil ederek ek araçlara veya komut dosyalarına ihtiyaç duymamanız gerektiği tamamen bağımsız olmaya çalışır.

Ayrıca, "yapı taşınabilirliği" teması etrafında tasarlanmıştır, böylece aynı bilgisayarda bir kod üzerinde aynı kodla aynı sorunla karşılaşmazsınız, ancak başka bir bilgisayarda değil (bu bilinen bir sorundur, Windows VM'lerine sahibiz) 98 makineden beri Delphi uygulamalarımızdan bazılarını başka hiçbir yerde derleyemedik). Bu nedenle, IDE tarafından üretilen Ant komut dosyalarının diğer IDE'lere aktarılması zor olduğundan, farklı IDE'ler kullanan kişiler arasında bir proje üzerinde çalışmanın en iyi yolu, ancak günümüzde tüm IDE'ler Maven'i ( IntelliJ , Eclipse ve NetBeans) anlıyor ve destekliyor ). Maven'den hoşlanmasanız bile, diğer tüm modern yapı araçları için referans noktası haline gelir.

Neden kullanmalısın

Maven ile ilgili çok güzel üç şey var .

  1. Maven (kullandığınız hangilerinin size beyan sonra) tüm kullanmanızı kütüphaneleri indirir ve bu kütüphaneleri onlar sizin için otomatik olarak kullanırlar. Bu çok güzel ve birçok kütüphane ile gülünç kolaylaşıyor. Bu, "bağımlılık cehenneminden" kaçınmanızı sağlar . Apache Ant's Ivy'ye benzer .

  2. Varsayılan olarak yapmak istediğiniz görevleri tanımlamanıza gerek kalmaması için " Konfigürasyon Üzerinden Konvansiyon " kullanır . Ant ya da Makefile'de yapacağınız gibi bir “derleme”, “test”, “paket” ya da “temiz” adım yazmanıza gerek yoktur. Dosyaları Maven'in beklediği yerlere koyun ve yarasadan çalışması gerekir.

  3. Maven da o kadar pek çok rutin görevleri idare edecek yükleyebileceği güzel eklentileri çok var JAXB kullanarak bir XSD şeması Java sınıfları oluşturma için cobertura ile test kapsamı ölçüm . Onları kendinize ekleyin pom.xmlve yapmak istediğiniz her şeyle bütünleşecekler.

İlk öğrenme eğrisi diktir, ancak (neredeyse) her profesyonel Java geliştiricisi Maven'i veya istediklerini kullanır. Maven'i her projede kullanmalısınız, ancak buna alışmanız biraz zaman alırsa ve bazen yeni bir şeyler öğrenmek bazen acıttığı için bazen manuel olarak bir şeyler yapabilmenizi dilerseniz şaşırmayın. Ancak, gerçekten Maven'e alıştığınızda, yapı yönetiminin neredeyse hiç zaman almadığını göreceksiniz.

Nasıl Başlanır

Başlamak için en iyi yer " 5 Dakikada Maven ". Gerekli tüm dosya ve klasör kurulumuyla kodlamanız için hazır bir projeyle başlamanızı sağlar (evet, en azından ilk başta quickstart arketipini kullanmanızı öneririm).

Başladıktan sonra, aracın nasıl kullanılması amaçlandığını daha iyi anlamak istersiniz. Çünkü " Maven ile Daha İyi İnşa Edilir ", nasıl çalıştığının cesaretini anlamak için en kapsamlı yerdir, ancak " Maven: Tam Referans " daha günceldir. Anlamak için ilkini okuyun, ancak daha sonra referans için ikincisini kullanın.


12
Maven kullanmayan ve kullanmadıkları için çok sayıda profesyonel Java geliştiricisi var; Bunlardan bazıları karmaşıklığını ve esnekliğini reddeder ve Ant veya benzeri ile sadık kalır, ancak artan sayıda Gradle ve Buildr gibi Maven haleflerine geçen insanlardır. Bu halefler, Maven'den kutudan güçlü bir yapı adımları seti sağlama fikrini devralır, ancak özel adımlar eklemeyi de oldukça kolaylaştırır. Varlıkları göz önüne alındığında, Maven'i yeni projeler için kullanmanın bir nedeni olduğunu düşünmüyorum.
Tom Anderson

5
Her zaman bir cevaba ne kadar detay verileceği sorusu vardır, ancak ofisinizde muhtemelen Maven veya boktan Ant cehennemidir (Ant + bash + perl + sihirli yollarla yapılandırılmış bilgisayar inşa eder). Seçme özgürlüğü ile iyi bir ortamda A + geliştiricileriyle çalışan şanslı birkaç kişiden biriyseniz, başka seçenekler de vardır (Gradle birdir). Ancak ortalama bir yerde çalışıyorsanız Maven, çalışma arkadaşlarınızın kendilerini sivri bir şeyle kesmelerine izin vermeyen en iyi araçtır.
Kızak

4
Gradle'ı kullanmak için A + geliştiricisi olmanız gerektiğini düşünmüyorum. Maven'i benimseyen bir örgütün neden Gradle'ı benimseyemediğini anlamıyorum. Gradle'ın Ant'in yaptığı gibi kendinizi ayağa vurmanıza izin verdiği doğrudur, ancak Maven'in oldukça zorlaştığı bir şekilde (ve bunu kanıtlamak için meslektaşlarımın atış ayaklarından oluşan bir koleksiyonum var); bu, Maven'in neredeyse imkansız hale getirdiği şeyleri yapmayı mümkün kılma ödülü.
Tom Anderson

4
Gradle gibi bir şey kullanmak ve vuruş ayaklarından kaçınmak için, programcıların triyaj sınıflandırmasını öneriyorum. Bazı programcılar derleme komut dosyalarını düzenlemek ve işleri az ya da çok doğru yapmaktan korkmazlar. Bu insanlar faydalıdır. Bazı programcılar derleme komut dosyalarından korkar ve onlara dokunmazlar. Bu insanlar en azından zararlı değil; 12 kişiden oluşan bir ekipte bulundum, sadece ikimiz yapıya dokunmaya cesaret ettik ve aslında oldukça iyi çalıştı. Bazı programcılar derleme komut dosyalarından korkmazlar, ancak dokunurlarsa bunları bozarlar. Bu insanlar tehlikelidir.
Tom Anderson

1
Java için npm gibi
KJW

9

Gönderen Sonatype doc :

Bu sorunun cevabı kendi bakış açınıza bağlıdır. Maven kullanıcılarının büyük çoğunluğu Maven'e “derleme aracı” diyecektir: kaynak koddan konuşlandırılabilir eserler oluşturmak için kullanılan bir araç. İnşaat mühendisleri ve proje yöneticileri Maven'e daha kapsamlı bir şey olarak başvurabilir: bir proje yönetim aracı. Fark ne? Ant gibi bir derleme aracı yalnızca önişleme, derleme, paketleme, test ve dağıtım üzerine odaklanmıştır. Maven gibi bir proje yönetim aracı, bir oluşturma aracında bulunan özelliklerin üst kümesini sağlar. Maven, oluşturma yetenekleri sağlamanın yanı sıra raporlar çalıştırabilir, bir web sitesi oluşturabilir ve bir çalışma ekibinin üyeleri arasında iletişimi kolaylaştırabilir.

Sonatype belgesine bakmanızı ve Maven'in gücünü anlamak için mevcut eklentilere bakarak biraz zaman geçirmenizi şiddetle tavsiye ederim.

Çok kısaca, Ant dedi. Ant ile, oluşturmak istediğiniz dosya ve kaynak kümesini belirtirsiniz, sonra bunların birlikte nasıl karıştırılmasını istediğinizi ve (temiz / derleme / kavanoz) içinde gerçekleşmesi gereken sırayı belirtirsiniz. Maven ile bunların hepsi örtük. Maven, dosyalarınızı belirli yerlerde bulmayı bekliyor ve bununla otomatik olarak çalışacak. Sonuç olarak Maven ile bir proje oluşturmak çok daha kolay olabilir, ancak Maven kurallarına göre oynamak zorundasınız!


Ben bunu aşağılamadım, ama belki de aşağıdan gelenler, Sonatype propagandasından alıntılarınızı Maven'in totaliter "proje yönetimi aracı" felsefesinin örtük bir tasviri olarak okurlar.
Tom Anderson

1
OP sorusunu cevapladığınızı düşünmüyorum, bunun yerine sadece pazarlama alanını yayınladınız ... ve bu spiel çok saçma çünkü "proje yönetimi" Maven'in hizmet ettiğinden daha fazla karıştırmak için sunduğu şeyden çok daha fazla, BENİM NACİZANE FİKRİME GÖRE.
Kızak

2
Benim eski yorum sesleri flamey eğer @Brian Maalesef, ama bana rephrase: Ben yorum hissettiğim tek sıra Maven'in açıklıyor eğer zaten Maven'in ne olduğunu anlamak, ancak bir ilk başlangıç noktası olarak yararlı değildir.
Kızak

5

Mavenbir yapı aracıdır. Birlikte Antveya Gradleolan Javabina için s araçları.
Java'da yeniyseniz, IDE'nizi kullanarak inşa edin, çünkü Mavendik bir öğrenme eğrisi vardır.


NetBeans'teki Maven için IDE desteği çok iyi ve öğrenme eğrisini neredeyse hiç var olmayan hale getiriyor.
Yüzbaşı Zürafa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.