2011-12-13 16 views
16

Mam wielomodułowy projekt Maven, który korzysta z nakładek WAR (stos 3 głębokich). Wszystko działa świetnie w Maven, ale nie mogę uruchomić mojej WAR z poziomu Eclipse, ponieważ narzeka na to, że nie znajduje różnych plików.Jak obsługiwać nakładki Maven WAR w środowisku Eclipse?

Jak mogę skonfigurować Eclipse (i launcher), aby móc uruchomić WAR z Eclipse bez konieczności instalowania Maven? Powinienem dodać, że moje projekty Eclipse WAR nie są dynamicznymi projektami internetowymi ... czy to część tego, co muszę zrobić?

UWAGA: Poniższe pytanie dotyczy tematu, ale odpowiedź wskazuje, że zawsze musisz najpierw zainstalować Mavena i wiem, że to nie może być słuszne, ponieważ są ludzie, którzy używają Eclipse bez Mavena.

Maven overlays and Eclipse

Znalazłem także ten, który sprawia, że ​​myślę, że nie jest możliwe poprzez waniliowym M2E:

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

Odpowiedz

18

udało mi się tego dokonać i wszystko działa świetnie. Oto, co należy zrobić:

Przede wszystkim potrzebujesz wtyczki M2E Eclipse, która jest niezbędna do automatycznego rozpoznawania i aktualizowania aplikacji Maven przez Eclipse. Zapewnia również ładny graficzny edytor POM. Pod koniec 2011 roku projekt M2Eclipse został przekazany fundacji Eclipse przez Sonatype i obecnie nazywa się po prostu M2E. Jednakże, nie jest nadal dostarczany z edycji Java EE Eclipse Indigo i musi być zainstalowane oddzielnie za pośrednictwem ich witryny aktualizacji

W przeszłości integracja między Eclipse i Maven była nieco kłopotliwy. Jednak ta nowa integracja Maven oparta na Eclipse jest teraz świadoma faktu, że istnieje wiele wtyczek Maven używanych w plikach POM i że tylko pewne cele niektórych wtyczek mają sens w środowisku IDE. Ponadto te cele, które mają sens podczas pracy w środowisku IDE, mogą wymagać specjalnej konfiguracji. Aby poprawnie obsłużyć to M2E obsługuje teraz pojęcie "konektora". M2E ma długą listę specjalnych złączy, które pozwalają jej na wykonanie "właściwej rzeczy" podczas wywoływania różnych mojos (cele wtyczek Mavena). Aby zobaczyć listę dostępnych złączy w Eclipse, przejdź do okna dialogowego Preferencje i wybierz Maven-> Dicovery-> Open Catalog. Złącza te powinny być instalowane automatycznie po wykryciu w pliku {{pom.xml}} podczas importu projektu. Wymaga to jednak poprawnej wersji kreatora importu M2E Maven (którego Indigo nie ma do czasu SR2).

Ponadto czasami te złącza są błędne i musimy korzystać z serwisów nocnych lub aktualizacji beta, aby uzyskać najnowsze poprawki. Jeśli masz starszą lub wadliwą wersję, musisz usunąć i ponownie zaimportować projekty po aktualizacji. Z tych powodów, moim zdaniem, wszystkie złącza M2E powinny być instalowane ręcznie przed zaimportowaniem projektu do Eclipse.

Złącze M2E-WTP jest tym, czego potrzebujesz, aby nakładki WAR działały w wyrzutniach Eclipse dla "serwerów" Eclipse. To złącze służy do integracji Maven z WTP ... i tym samym obsługuje nakładki WAR, konfigurację kontenera serwletu, konfigurację Eclipse WTP, ustawienia kontekstu root i inne rzeczy, które zmierzają w kierunku uczynienia z Eclipse narzędzia "Just Work", gdy moduł WAR Maven jest importowany do Eclipse jako projekt.

Witryna aktualizacja dla złącza m2e-WTP to: http://download.jboss.org/jbosstools/updates/m2eclipse-wtp/

Dodaj tę witrynę M2E-WTP i zainstalować wtyczkę. Zauważ jednak, że ani M2E, ani złącze M2E-WTP nie będą umieszczać zależności nakładki WAR na ostatnią WAR. Musisz to zrobić, dodając wymagane zależności do końcowego pliku WAR pom.xml. Nie wiem, dlaczego narzędzia nie robią tego, ale nie robią tego - po prostu przejdźmy do tego. ;-)

W tym miejscu zalecam wykonanie pełnej aktualizacji za pośrednictwem {{Help-> Check for Updates}}. Gdy to zrobisz, powinieneś być w stanie po prostu dodać serwer Eclipse, kliknąć swój projekt (nie ten, który jest nakładką, ale regularny) i wybrać "Uruchom na serwerze ...".

Zmiany dokonane w WAR lub WAR WARUNKU zostaną automatycznie opublikowane na serwerze. Zmiany w JavaScript są publikowane bez restartowania serwera ... wszystko co musisz zrobić, to odświeżyć przeglądarkę, aby zobaczyć, jak działa nowy kod.

Druga aktualizacja: Jest to błąd (https://issues.sonatype.org/browse/MECLIPSEWTP-174) w M2E, które mogą doprowadzić do lib katalogu WEB-INF/przypadkowo traci wszystkie swoje pliki JAR. W takim przypadku aplikacja serwletowa oczywiście nie zostanie uruchomiona. Rozwiązaniem jest wyczyszczenie serwera poprzez kliknięcie prawym przyciskiem myszy na serwerze i wybranie opcji "wyczyść". Należy pamiętać, że samo czyszczenie katalogu roboczego nie przywróci brakujących plików JAR.

+0

Cieszę się, że znalazłem tę odpowiedź. Ale to nie działa dla mnie. Wypróbowałem bardzo prosty przypadek: prosty projekt wojenny A, prosty projekt wojenny B, a pom A deklaruje wojnę B jako zależność, ale w rzeczywistości nie używa żadnej klasy z B - w tym przypadku "mvn install" działa z powodzeniem, z projekt nakładki B dodany do wojny A zgodnie z oczekiwaniami. Ale jeśli dodaję w projekcie A jakieś odniesienie do klasy z B, widzę dwa problemy: (1) eclipse nie może rozwiązać odwołania do klasy z B. (2) 'mvn install' (z zaćmienia lub z linii poleceń) nie działa z błędem kompilacji na każdym miejscu w kodzie A, gdzie odnoszę się do klasy z B. – rapt

+1

Zainstalowanie złącza zgodnie z sugestią nie rozwiązało tych problemów. Czego tu mi brakuje? – rapt

+0

"Należy jednak pamiętać, że ani M2E, ani złącze M2E-WTP nie będą nakładały zależności WAR na ostatnią WAR". Mam dokładnie ten problem, znasz inne prace dookoła. Ten, który podałeś, nie zadziała w mojej sprawie. – Hoffmann

Powiązane problemy