Jesteś tutaj

Próbujemy NetBeans 6.1 Beta 1 ze Struts2 i Maven2

Karty podstawowe

Nie mogłem zostać obojętny na wywód Jacka nt. najnowszego NetBeansa i ja również postanowiłem wziąć udział w konkursie ;-)
Informacje o nowej wersji i konkursie dostałem już w piątek przed Świętami, jednak jechałem już do domu i mając w perspektywie świąteczną atmosferę, temat odłożyłem na później, gdy znów wrócę do Warszawy do pracy.

Mając trochę czasu, postanowiłem sprawdzić jak współpracuje najnowsza Sieciowa Fasolka z Maven2 oraz Struts2. Obecnie to są dwa główne tematy, które rozpracowuję, zwłaszcza, że 29 kwietnia mam poprowadzić swoją pierwszą prezentację dla członków WJUGa.

Ze stron netbeans.org pobrałem wersję instalacyjną (Web & Jave EE) i rozpocząłem instalację, rezygnując jednak z instalacji Glassfisha oraz Tomcata. Oba serwery mam już zainstalowane na dysku i nie lubię sobie zaśmiecać dysku duplikatami.

NetBeans installer

I pierwsza wpadka (znaczy się nie do końca), nie można zainstalować NB bez wybrania przynajmniej jednego serwera, co raczej jest dziwne. I co jeszcze dziwniejsze, mi udało się zainstalować NB bez Tomcata i Glassfisha, jednak nie jestem tego w stanie powtórzyć (instalację robiłem rano, a zrzuty już popołudniu). Po przeszukaniu bazy bugów, zgłosiłem swój pierwszy bug Issue 131201: Could not unselect Tomcat and Glassfish ;-)

Po zakończonej instalacji, uruchomiłem NB i zacząłem sprawdzać jakie wsparcie daje prosto z pudełka NB dla Mavena2 oraz Struts2. Niestety, nic takiego nie znajdziemy w "czystym" NetBeansie. Nie załamując rąk, przeszedłem do instalacji pluginów, pewnie ktoś był tak dobry i stworzył już pluginy do obsługi Mavena2 oraz Struts2. W przypadku Mavena2 faktycznie jest całkiem dobry plugin, jednak nie ma nic takiego dla Struts2. Szybkie rzut oka za pomocą Google i okazało się, że ze wsparciem dla Struts2 w NetBeansie będzie raczej kiepsko. Jedyne co znalazłem to nbstruts2support, jednak wciąż w fazie planowania.

Install plugins

Dobra, stwierdziłem, że sam plugin do Mavena2 musi mi wystarczyć, szybka instalacja, dla pewności restart środowiska. Nie namyślając się długo, postanowiłem użyć już stworzonej aplikacji na potrzeby mojego cyklu artykułów o Struts2, jako testu sprawdzającego dla pluginu do obsługi Mavena2. Jakie było moje zaskoczenie, gdy w oknie dialogowym "Open project", moja testowa aplikacja jest widoczna jako projekt NetBeans.

Open project

Bez dalszego namysłu otwarłem projekt i wszystko gra, wszystkie zależności są widoczne, struktura plików jest zachowana, więc najwyraźniej plugin działa dobrze.

Project structure

Również we właściwościach projektu można zobaczyć informacje na temat mavenowej natury projektu.

Maven project properties

Maven project properties

Edycja pom.xml jest tak samo przyjemna, środowisko podpowiada tagi, jak również pozwala użyć zindeksowanych wcześniej zależności z lokalnego repozytorium, co bardzo miło mnie zaskoczyło.

Maven POM

Dobrze, przejdźmy do edycji plików JSP i tu również nie ma zaskoczenia, nie ma problemu z edycją tagów Struts2, nawet bardzo ładnie działa pomoc kontekstowa (w sensie, że jest), jednak raz otwarta w danym miejscu, nie daje się przesunąć nigdzie indziej. I znów mogłem się wykazać, zgłaszając kolejnego buga :D Issue 131203: Help window is not following dropdown list & is not movable

JSP tag completion

JSP tag completion

Kolejny krok to edycja struts.xml i tu raczej nie spodziewałem się cudów, mając określony nagłówek w pliku xml, NB jest w stanie sięgnąć przez internet i użyć zdalnego pliku DTD / XML Schema, szkoda tylko, że chyba nie jest wykorzystywane żadne cachowanie, gdyż każde odwołanie się do pomocy kontekstowej objawiało się chwilą oczekiwania na podpowiedź. Jednak może jest to wina mojego łącza w pracy ;-)
Jako minus muszę podać, że środowisko nie pozwala na dodanie pliku DTD z archiwum jar, który jest dodany w zależnościach. Zmusza to do trzymania osobno plików DTD na dysku i zarządzania nimi.

XML completion

Ostatni krok to próba uruchomienia projektu na bazie Glassfisha (którego skonfigurowałem ręcznie i odpowiednio zmieniłem kontekst aplikacji), szybkie kliknięcie na przycisk "Run" i po kilku chwilach mam aplikację działająca w naszej ulubionej przeglądarce. Minus takiego podejścia, jest za każdym razem kompilowanie, testowanie i budowanie archiwum war, a następnie deployowanie go do Glassfisha, takie podejście będzie pewnie "denerwujące" dla początkujących programistów.

Application up and running

Reasumując moje pierwsze poważniejsze spotkanie ze środowiskiem NetBeans, wydaje mi się one dość ciekawym rozwiązaniem, zwłaszcza dla początkujących programistów, którzy chcą otrzymać kompletne narzędzie do tworzenia aplikacji WWW. Po prostej instalacji, można od razu przystąpić do pisania aplikacji, a następnie jednym kliknięciem uruchomić na serwerze dostarczonym razem z NB. Tak samo integracja z Maven2 jest rewelacyjna, co jednak jest bardziej zasługą plugina, niż środowiska. Jednak jak już wielu się przekonało, samo środowisko nie zawsze jest wystarczające i dostęp do dobrych pluginów, również daje pozytywny obraz IDE jakim bez wątpienia jest NetBeans 6.1 Beta. I jak sam się przekonałem, nie jest on taki zły ;-)

Pozdrawiam
--
Łukasz

Odpowiedzi

No i proszę mam konkurenta, więc nie pozostając obojętnym na zaczepki zaraz zabiorę się za inną nowinkę NB 6.1 BETA (co i tak planowałem bez tej zachęty) :P

Jacek

Co by to był za konkurs, gdyby startował w nim tylko Jacek!!! A tak jest z kim konkurować i człowiek uczy się czegoś nowego :D

To jest podejście! Dokładnie takiego pojedynku oczekiwałem. Patrz co nadchodzi - teraz mnie dopiero rozgrzałeś ;-)

"Minus takiego podejścia, jest za każdym razem kompilowanie, testowanie i budowanie archiwum war, a następnie deployowanie go do Glassfisha, takie podejście będzie pewnie "denerwujące" dla początkujących programistów."

Nie tylko dla początkujących ;) Przy większych projektach może być to naprawde spory problem. Dla mnie jest to największy minus javy i momentami jeżeli nie potrzebuje mocnego backendu wole użyć czegoś innego ... - taki mały oftop nie związany z NB.

Jest to minus środowiska NetBeans, a nie Javy ;-) Dla przykładu, używając WebLogic Sever nie musisz budować za każdym razem archiwum war czy ear, wystarczy że skompilujesz klasę i "sturchniesz" WLSa (chodź może i to się zmieniło w nowszej wersji)