2011-12-13 26 views
16

WAR bindirmelerini kullanan çok modüllü bir Maven projem var (bunların 3 derin yığını). Maven'de her şey harika çalışıyor, ancak Eclipse içinden WAR'imi başlatamıyorum çünkü çeşitli dosyalar bulamadığından şikayet ediyor.Eclipse'de Maven WAR katmanları nasıl ele alınır?

Eclipse'i (ve bir başlatıcıyı) nasıl yapılandırabilirim, böylece ilk önce Maven Yüklemesi yapmak zorunda kalmadan, WAR'İ Eclipse'den çalıştırabilir miyim? Eclipse WAR projemizin dinamik web projeleri olmadığını eklemeliyim ... yapmam gereken şeyin bir parçası mı?

NOT: Aşağıdaki soru konuya değiniyor, ancak yanıt her zaman öncelikle bir Maven yüklemesi yapmanız gerektiğini ve bunun doğru olamayacağını biliyorum çünkü Eclipse'i Maven kullanmadan kullanan insanlar var.

Maven overlays and Eclipse

Ben de beni o vanilya M2e yoluyla mümkün değildir düşündürüyor hangi bunu bulmuşken:

http://jira.codehaus.org/browse/MNGECLIPSE-599

cevap

18

Bunu başarmak başardı ve her şey iyi çalışıyor. İşte yapılacaklar:

Eclipse'in Maven bağımlılıklarını otomatik olarak tanıması ve güncellemesi için gerekli olan M2E Eclipse eklentisine ihtiyacınız vardır. Ayrıca güzel bir grafik POM editörü sağlar. 2011'in sonlarından itibaren M2Eclipse projesi Sonatype tarafından Eclipse vakfına bağışlandı ve şimdi sadece M2E olarak adlandırılıyor. Ancak, yine de Eclipse Indigo Java EE sürümü ile sevk edilmez ve Geçmişte bunların güncelleme sitesine

aracılığıyla ayrı olarak yüklenmesi gerekir, Eclipse ve Maven arasındaki entegrasyonun biraz olmuştur zahmetli. Bununla birlikte, bu yeni Eclipse tabanlı Maven entegrasyonu, POM dosyalarında kullanılan birçok Maven eklentisi bulunduğundan ve belirli eklentilerin sadece belirli hedeflerinin bir IDE ortamında anlam kazanmasından haberdardır. Ayrıca, bir IDE içinde çalışırken anlam ifade eden hedefler özel konfigürasyona ihtiyaç duyabilir. Bu M2E'nin artık düzgün bir şekilde ele alınması için "bağlayıcı" kavramını destekliyor

M2E, çeşitli mojonlar (Maven eklenti hedefleri) çağrılırken "Right Thing" yapmasına izin veren uzun bir özel konektörler listesine sahiptir. Eclipse içindeki mevcut bağlayıcıların listesini görmek için Tercihler diyalog kutusuna gidin ve Maven-> Dicovery-> Katalog Aç'ı seçin. Bu aktarımların, proje içe aktarma sırasında bir {{pom.xml}} dosyasında algılandığında otomatik olarak yüklenmesi gerekir. Ancak, bu M2E Maven ithalat sihirbazının (Indigo'nun SR2'ye kadar sahip olmadığı) doğru sürümünü gerektirir. Ayrıca, bazen bu bağlaçlar buggy'dir ve en son düzeltmeleri almak için gece veya beta güncellemeleri sitelerini kullanmamız gerekir. Eski veya buggy sürümünüz varsa, yeni sürüme geçtikten sonra projeleri silmeniz ve yeniden almanız gerekir. Bu nedenlerden dolayı, bence tüm M2E konnektörleri projenizi Eclipse'e aktarmadan önce elle kurulmalıdır.

M2E-WTP bağlacı yapmak için gereken tek şey WAR bindirmeleri Eclipse "Servers" için Eclipse başlatıcılarında çalışır. Bu konektör Maven'i WTP ile entegre etmek için kullanılır ... ve böylece WAR overlays, servlet konteyner kurulumu, Eclipse WTP konfigürasyonu, root context ayarı ve Maven WAR modülü olduğunda Eclipse web tooling'i "Just Work" (İşe Başlama) işlemine yönelen diğer şeyler için kullanılır. bir proje olarak Eclipse içine alınır.

M2E-wtp konektör için güncelleme sitesidir: http://download.jboss.org/jbosstools/updates/m2eclipse-wtp/

bu M2E-WTP site ekle ve konektörü takın. Bununla birlikte, ne M2E ne de M2E-WTP konnektörü, Bindirme Savaşının bağımlılıklarını son SAVAŞ'a koyamayacağına dikkat edin. Bunu, son WAR pom.xml'ye gereken bağımlılıkları ekleyerek yapmalısınız. Aletlerin neden bunu yapmadığını bilmiyorum, ama yapmıyorlar - sadece üstesinden gelin. ;-) Bu noktada, {{Yardım - Güncellemeleri Denetle}} aracılığıyla tam bir güncelleme yapmayı da öneririm. Bu yapıldıktan sonra, sadece bir Eclipse sunucusu ekleyebilmeniz, projenizi tıklayabilmeniz (bindirme değil, normal olanı) ve "Sunucuda Çalıştır" seçeneğini seçmeniz gerekir.

WAR ya da overlay WAR için yapılan değişiklikler otomatik olarak sunucunuza gönderilecektir. Javascript değişiklikleri, sunucu yeniden başlatılmadan yayınlanır ... yapmanız gereken tek şey, yeni kodu çalıştıran tarayıcıda yenilemek.

İkinci Güncelleme: kazara tüm JAR dosyalarını kaybetme WEB-INF/lib dizinine neden olabilir M2e bir hata (https://issues.sonatype.org/browse/MECLIPSEWTP-174) yoktur. Bu olduğunda, sunucu uygulamanızın başlatılmayacağı açıktır. Çözüm, sunucuyu sağ tıklayıp "temizle" yi seçerek sunucuyu temizlemektir. Yalnızca iş dizinini temizlemenin bu eksik JAR'ları geri yüklemeyeceğini unutmayın.

+0

Bu cevabı bulduğuma sevindim. Ama benim için çalışmıyor. Çok basit bir dava denedim: basit savaş projesi A, basit savaş projesi B ve pom A bağımlılık olarak B savaşını ilan eder, fakat B'den herhangi bir sınıfı kullanmaz - bu durumda 'mvn install' başarıyla çalışır. B katmanı projesi B, beklendiği gibi savaş A'ya eklendi. Ama eğer proje A'yı B sınıfından bir referansa eklersek, iki problem görüyorum: (1) eclipse, B. (2) 'mvn install' (eclipse veya komut satırından) den başarısız olur. B kodunda yer alan her yerde derleme hatasıyla birlikte B. – rapt

+1

sınıfına başvurduğum gibi Bağlayıcıyı önerdiğiniz gibi yüklemek bu sorunları çözmedi. Burada neyi özlüyorum? – rapt

+0

"Ancak, M2E ve M2E-WTP konnektörü kaplamaların son SAVAŞ'a bağımlı hale getirilmeyeceğini unutmayın". Bu kesin problemi yaşıyorum, başka bir iş var mı bilirsin. Sağladığınız dava benim durumumda çalışmayacak. – Hoffmann

İlgili konular