Maven ile Java EE Projeleri Oluşturma


13

Eclipse ile yaklaşık bir yıldır Java EE web uygulamaları geliştiriyorum. İşverenim Maven'i kullanmıyor, ancak ne kadar çok okursam, Maven + Hudson'ın bizim için büyük ölçüde faydalı olacağına ikna oldum. Öncelikle, boş zamanlarımda bu teknolojilerle rahat olmalıyım, böylece bir kavram kanıtı oluşturabilirim.

Şu anda hala bir Maven acemiyim. Maven ile Java EE web uygulamaları oluşturmak için bir dizi en iyi uygulama var mı? Örneğin, temel bir arketip ile bir proje oluşturabilir ve sonra sunucu uygulaması kapsayıcısı, EJB, EclipseLink, vb için POM'ye bağımlılıklar koyarak gerekli tüm JAR'ları ekleyebilirim. yapmanın yolu. Bu konuda sağlayabileceğiniz her türlü rehberliği çok takdir ediyorum.

Yanıtlar:


10

Arketiplere daha sonra kadar uğraşmayın

Maven hakkında bilmeniz gereken tüm bilgiler için web sitelerindeki bazı kitapları okuyun . Ancak, elde etmeye çalıştığınız şey için bu biraz abartılı.

Başlamak için web uygulamanızı, web uygulamaları için standart Maven yapısını izleyerek aşağıdaki gibi düzenleyin. (Bunun için bir Maven arketipine ihtiyacınız yoktur, sadece bir grup standart klasördür, 2 dakika içinde yapabilirsiniz).

  • src/main/java - üretim Java kodunuzu içerir
  • src/main/resources - üretim sınıfı yol kaynaklarınızı içerir (örneğin, Bahar bağlamları)
  • src/main/webapp - (WEB-INF / web.xml içerir, ancak lib klasörü yoktur)
  • src/test/java - test Java kodunuzu içerir
  • src/test/resources - test kaynaklarınızı içerir (örneğin, web hizmeti testi için XML yayınları vb.)

Temel eklentiler

Bir sonraki adım, bir grup eklenti seçmek. Her zamanki şüpheliler, açık, temiz, derleme ve kaynakları destekleyen kişilerdir (Maven'in bir parçası olarak gelirler, ancak bunları yapılandırabilirsiniz). Sonra emin ateş birimi test cihazı ve WAR eklentisine sahip olacaksınız. Bu çok basit bir web uygulaması oluşturmak için yeterlidir.

Daha gelişmiş eklentiler

Bir sonraki adım, kodunuzu kapsamlı bir şekilde gözden geçirecek ve çeşitli potansiyel sorunları bildirecek Findbugs ve PMD eklentilerini tanıtmaktır. Muhtemelen çapraz referans kaynak kodu için JXR, TODO'ları ve REFACTOR etiketlerini takip etmek için etiket listesi vb. Her şeyden önce ...

... Web uygulamaları için Jetty eklentisini kullanın

Kolay hata ayıklama için WAR dosyanızı IDE'nizde çalıştırmak için Jetty eklentisini kullanın. Hızlı ve küçüktür ve işi hızlı bir şekilde yapar. Maven yapınızın bir parçası olarak İskeleye sahip olmak, bazı karmaşık Sunucular paneli yapılandırılmış bir IDE'ye ihtiyaç duymadan projenizi herhangi bir makinede test edebilmenizi sağlar. Ayrıca, diğer WAR dosyalarına bağımlılıkları bildirmenize izin verir, bu da tek bir komut "mvn clean jetty: run" ile birden fazla web uygulamasından oluşan eksiksiz bir çalışma ortamı oluşturabileceğiniz anlamına gelir. Bu her yerde çalışır ve hatta Bahar enjekte edilmiş veri kaynaklarınızın harici olarak yapılandırılması için test JNDI yapılandırması bile sağlayabilirsiniz. Bu Jetty yaklaşımını standart bir tanıtım HTML sayfasıyla birleştirirseniz (src/test/resources/demo.html) çalışan bir yerel ortam elde etmeye çalışırken geliştirici çalışma saatlerinden tasarruf edersiniz. Bir komut ve bitti. Basit.

IDE'nizi yapılandırma

Maven ile tüm büyük çocuklar desteklediğinden kolay: Eclipse, Netbeans ve tabii ki kişisel favorim Intellij. Sadece IDE'nizi pom.xml'ye yönlendirin ve listelenen tüm bağımlılıkları sizin yerinize halledecektir. Artık hakkında mucking yok WEB-INF/lib. Eclipse'de genellikle Dosya | İthalat ... | Maven Projesi | pom.xml.

Hudson ile entegrasyon

Önce Hudson'ı yükleyin (sadece bir web uygulamasıdır) ve ardından sürüm kontrol sisteminizi hedefleyerek uygun sürümü kontrol etmesini sağlayın. Son adımınız, yapılandırmayı yapmak için Maven'i kullanacak şekilde yapılandırmaktır. Açıkçası Maven'in inşaat makinenize kurulması gerekecek (geliştirme makinenizden farklı olduğu varsayılarak).

Hudson sadece anlık görüntü oluşturuyor

Hudson'ın anlık görüntü derlemeleri gerçekleştirmesini ve sürüm derlemelerini manuel bir işleme bırakmasını sağlayın. Bu yaklaşımı kullanmak, geliştiricilerin kodlarını bir anlık görüntü revizyonu (örn. 1.0.0-SNAPSHOT) altında paylaşabilecekleri anlamına gelir ve yalnızca derlemeyi geçebiliyorsa ekip deposuna paylaşılır. Genellikle, "site" hedefi de dahil olmak üzere işleminizin bir parçası olabileceğinden, her yapı için küçük bir proje web sitesi oluşturacağından Hudson "mvn clean deploy" işlemini yürütür. Ekipteki geliştiriciler, Maven bağımlılık yönetimi süreci aracılığıyla projelerine otomatik olarak güncellenen anlık görüntü derlemesine sahip olacaklar.

Hudson, her türlü metriği destekleyebilecek zengin bir eklenti sunar. Benim kişisel favorim, zaman içinde proje başına geçen test sayısını takip etmektir. Yönetime birim test sayınızın ve kapsamınızın sürekli arttığını göstermek harika.

Genel kurulum kılavuzu

Depolarınızı en azından aşağıdaki yapıya bölün:

  • team-release - Serbest bırakılan tüm üretim eserleriniz buraya gelir
  • ekip anlık görüntüsü - Tüm anlık görüntü geliştirme eserleriniz buraya gider
  • üçüncü taraf sürümü - Destekleyen tüm üçüncü taraf kütüphaneleriniz buraya gelir (ör. Bahar, Hazırda Bekleme vb.)

Geliştirici kullanıcı hesapları, anlık görüntü veya sürüm gibi ekip havuzlarına yazamaz. Bu, bir geliştiricinin acele etmeleri ve hızlı bir şekilde norm haline gelmeleri durumunda Hudson'ı atlamasını sağlayacaktır.

Tüm üçüncü taraflarınız için her zaman kaynağı, javadocları ve SHA imzalarını indirdiğinizden emin olun. Jarvana , bulmak zor olan herkes için mükemmel bir havuz gezgini.

Sürekli büyüyen deponuz üzerinde daha iyi kontrol sağlamak için Nexus veya Artifactory gibi bir havuz yöneticisi kurmayı düşünün.


2
Sonar da oldukça müthiş ve maven ile iyi uyuyor / Hudson
Kevin

1
Kesinlikle. Şu anda, bir ekipte bir Maven projesi üzerinde çalışıyorsam, yerel bir Findbugs / PMD'nin katil sorunlarını hızlı bir şekilde yakalamasını beklerdim, sonra Jenkins bir Nexus veya Artifactory'ye yapay dağıtım ile bir Sonar işi yapar. Bu, yapay nesnelerin kolay konumlandırılmasını sağlar ve proje ekosistemi boyunca bu yapay nesneler için etki analizi ("kullanıldığında") sağlar. Git, JIRA ve Fisheye ile birleştiğinde harika bir geliştirme sürecin var.
Gary Rowe

1
Gary, pdf bağlantısının süresi doldu
user1787812

1

Maven çok sayıda arketip sağlar

mvn archetype:generate

kullanılabilir bir liste yazdırır.

J2EE arketipleri ile düz Java arketipleri arasındaki temel fark, jsp ve görüntüler için dizinlerin oluşturulmasıdır. Yeni bir J2EE projesi başlatırsanız, bunlardan birini en baştan kullanmayı düşünün.

Projeniz büyüdükçe daha fazla bağımlılık ekleyebilirsiniz. Şahsen ben minimal bağımlılık koleksiyonu (örneğin J2EE temel arketip) ile başlayıp yavaş yavaş ihtiyacım olanı ekleyerek tercih ederim.


0

Bunu temel bir arketipten başlayıp tüm bitleri ekleyerek yaptım ve bunun çok iyi bir yol olmadığından eminim. Ama bunun başka şekilde de garip olduğunu düşünüyorum; “sırlardan derinlemesine bilgili değilseniz” iyi bir arketipin seçilmesi zordur. Bunların hepsi, benim zevkime göre sihirbazca irfan (makul keşfedilebilir teknik bilginin aksine) gibi çok fazla…


Bence bu iyi bir soru. Daha iyi bir cevap alsaydım.
Donal Fellows

Çok takdir ediliyor, efendim.
Michael

0

Maven, Arketipler adı verilen şablonlardan proje oluşturmanın bir yolunu sunar . Komutu etkileşimlimvn archetype:generate olarak seçmek için komutu kullanın . Doğrudan birini de belirtebilirsiniz.

mvn archetype:generate \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-j2ee-simple \
    -DarchetypeVersion=1.0

Hepsi bir satırda.


0

Son üç aydır Maven ve Hudson kullanıyorum. Tüm birim testleri yaparak test raporu oluşturarak kod tabanının sağlığını düzenli olarak kontrol etmeme yardımcı olur. Bunu deneyebilirsiniz.
Ayrıca Spring Roo'yu da deneyebilirsiniz. Spring tabanlı J2EE projesi oluşturmak için bir RAD aracıdır.

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.