wtorek, 6 lipca 2010

Problem z m2eclipse

Witam!

Jaki Eclipse jest - każdy widzi i większość wie. W trakcie niedawno rozpoczętych praktyk często spotykam się z opinią, że Eclipsem nie warto sobie w ogóle głowy zawracać, że jest kompletnie bezużyteczny etc. etc. Osobiście twierdzę, że mając na głowie mnóstwo rzeczy, których muszę się nauczyć "na wczoraj" (lista postanowień noworocznych to przy tym pikuś ;)), zawracanie sobie głowy nauką i przyzwyczajaniem się do nowego IDE było by mało efektywne. Dlatego uparcie trzymam się Eclipsa i prę dalej. Miało być o problemie z integracją Eclipse Galileo z Mavenem, ale najpierw jeszcze sam nawrzucam na moje ukochane IDE. bo co za dużo, to niezdrowo:
  • Eclipse Helios po wielu próbach i ogromnej ilości dobrych chęci okazał się totalnie bezużyteczny do pracy z Google App Engine, AJAX'em, jQuery etc. Pluginy odpowiedzialne za wsparcie dla tych technologii/narzędzi zwyczajnie nie są kompatybilne z najnowszą wersją Eclipsa...
  • Na potrzeby napisania tego postu wróciłem dzisiaj na chwilę do Eclipse Galileo na Windows 7 i oto jaki komunikat otrzymałem przy starcie aplikacji (nie wymaga chyba komentarza):
A teraz wracając do integracji Mavena z Eclipse Galileo (na Heliosie nawet nie pomyślałem, żeby to sprawdzić) - prostym rozwiązaniem wydawać by się mógłby się wydać wybór wtyczki m2eclipse. I tak jest, ale osobiście srodze się zawiodłem już na samym początku. Pierwszy problem to fakt, że Eclipse z natury uruchamia aplikacje za pomocą JRE, a nie JDK. Aby to zmienić musimy w Window -> Preferences -> Java -> Installed JRE's ustawić jako domyślne JRE z JDK. Klikamy Add ...

... wybieramy Standard VM ...

... i w Directory wpisujemy adres zainstalowanego w systemie JDK

Potem wybieramy go jako domyślny na liście JRE i klikamy OK:

Wyłączamy Eclipse i otwieramy plik konfiguracyjny eclipse.ini (w głównym katalogu Eclipse). PRZED parametrem -vmargs dodajemy parametr -vm, a linijkę niżej podajemy ścieżkę do JRE. U mnie wygląda to następująco:

Pamiętajmy, by nie podawać ścieżek ze spacjami oraz używać '\\' lub '/' zamiast standardowego '\' Windowsa! Uruchamiamy Eclipse i cieszymy się wtyczką m2eclipse :)

Jeśli zaimportujemy projekt stworzony już wcześniej (File -> Import -> Existing Maven Projects) i spróbujemy wykonać Maven install z menu rozwijanego Run as możemy otrzymać taki oto komunikat:


Could not calculate build plan: Missing:
----------
1) org.apache.maven.plugins:maven-resources-plugin:maven-plugin:2.4.1
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=org.apache.maven.plugins -DartifactId=maven-resources-plugin -Dversion=2.4.1 -Dpackaging=maven-plugin -Dfile=/path/to/file
Alternatively, if you host your own repository you can deploy the file there:
mvn deploy:deploy-file -DgroupId=org.apache.maven.plugins -DartifactId=maven-resources-plugin -Dversion=2.4.1 -Dpackaging=maven-plugin -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
----------
1 required artifact is missing.
for artifact:
org.apache.maven.plugins:maven-resources-plugin:maven-plugin:2.4.1
from the specified remote repositories:
central (http://repo1.maven.org/maven2, releases=true, snapshots=false)





Aby temu zaradzić musimy do POM'a dodać w sekcji build taki oto wpis o używaniu resource-plugin w nowszej wersji (np. 2.4.2). Całość wygląda następująco:

Teraz po wykonaniu komendy install w katalogu target znajdziemy nasz "wymarzony" plik JAR. Trochę (za)dużo zachodu, prawda? Niestety, takie właśnie są uroki używania Eclipse...

Mam nadzieję, że komuś przyda się ta informacja. Ja walczyłem ponad godzinę z Eclipse nim Maven zaczął mi w nim "działać". Bardzo pomocne okazały się wpis na Victoria's blog, Stackoverflow oraz komentarz Nikola na blogu Bright Side.

Pozdrawiam i do następnego razu!

9 komentarzy:

  1. Po czasie jaki spędziłem na pisaniu tego wpisu stwierdziłem, że trzeba wreszcie pomyśleć o screencastach. Niby o wiele więcej czasu zajmuje zrobienie takiego filmiku, ale o wiele łatwiej i przejrzyściej wydaje mi się można by przekazywać takie rozwiązania jak dzisiaj. Jacku - ile czasu szacujesz zajęło by zrobienie takiego screencastu?

    OdpowiedzUsuń
  2. Hehe, a skąd pomysł, że będę czytał komentarze na Twoim blogu?! :)

    Skoro już przeczytałem, to i odpowiedź się należy - ze skrinkastami to różnie bywa, ale w tym konkretnym przypadku pewnie 1 tydzień na dobrze skrojony skrinkast liczyłbym. Możnaby nawet zejść do 30 minut, ale to zawsze problemy z głosem, a to scenariusz nie ten i tak dalej. Rekordem byłoby dla mnie nagranie tego w 2 dni.

    OdpowiedzUsuń
  3. @Jacek - miałem po prostu taką cichą nadzieję :) W takim razie zostanę na razie przy takiej formie i bardziej ją dopracuje, by dopiero po za jakiś czas przejść na screencasty, ale wtedy już może nie takie wyrywkowe, tylko takie jak mi się kiedyś marzyły - coś w stylu "Java and Eclipse for total beginners" - kilka części o jakimś narzędziu, bardziej technologii, które od razu w sobie miały by rozwiązania najczęstszych problemów :) Ach te marzenia :)

    OdpowiedzUsuń
  4. Jakoś zawsze mnie odrzucał m2eclipse... Odpalam zawsze Mavena z linii komend, a potem mvn eclipse:eclipse i tyle. Wiem, oldschoolowe podejście, ale za to zawsze działa. :)

    --
    pozdrawiam
    Tomek

    OdpowiedzUsuń
  5. Boże miłosierny, to właśnie cały Eclipse...

    W "intelidżeju" Maven fura i wsparcie do niego jest zainstalowane już domyślnie. Nic nie musisz robić i po prostu działa. A po to właśnie jest IDE żeby działało i pomagało.

    Ludzie, że nie szkoda życia na tego waszego Eclipsa... ;)

    OdpowiedzUsuń
  6. A jakie ide zamiast eclipsa?

    OdpowiedzUsuń
  7. @Henryk - Tak, ale przyzwyczajenie się do IntelliJ IDEA trochę trwa, a w momencie nauki intensywnej czas to produkt wyjątkowo deficytowy.
    @Jacek - każde się nada ;)

    OdpowiedzUsuń
  8. @Henryk - mi na eclipsie się pracuje o niebo lepiej niż na ideii. Kwestia przyzwyczajenia pewnie, ale jak IDE nie robi tego co oczekujesz to doprowadza do szału (a najbardziej denerwują pierdoły). Obecnie również opieram się jak mogę i gdzie nie muszę to używam eclipsa miast inteligentnegodżeja.

    OdpowiedzUsuń
  9. Ustawianie JRE jako domyślnej maszyny javy do uruchomienia Eclipsa z m2eclipse jest błędem - dostaniesz komunikat "Eclipse is running in a JRE, but a JDK is required". Tu (parametr -vm) trzeba podać ścieżkę do JDK.

    OdpowiedzUsuń