Tworzenie projektów w Mavenie

0

Witam
Zwykle projekty moje tworzyłem standardowo z IDE - z eclipsa czy z intellij. Teraz używam tego drugiego i postanowiłem, że zaczne używać mavena. Włączyłem pare tutoriali, żeby zobaczyć jak to wygląda. I prawdę mówiąc mam trochę mieszane uczucia :)

Generalnie, żeby stworzyć projekt web-appki w intellij wybierałem sobie właściwie kreatorem - projekt javy, frameworki itd - i wszystko sie ladnie tworzylo
W mavenie z tego co widzę trzeba pisać z palca generalnie wszystko. Sprawa wydaje się trochę nużąca bo (pewnie dlatego, że to moje pierwsze projekty mavenowe) żeby stworzyć projekt pod jakas aplikacje na JSF musze pisać, pisać, szukac dependencies w internecie, edytować dużo XMLa, plik faces-config stworzyc, stworzyc servlet, mapować go(co z resztą mi nie działa :D)

Generalnie wiem, ze projekt mavena to taki ogólny wzorzec na strutuke projektów i że bede mógł go odpalić z niemalże każdego lepszego IDE. Tylko trochę przerażające jest ile trzeba sie naklikać, napisać w CMD w windowsie zeby stworzyc w ogóle jakąś strukture folderów dla projektu.

Nie do końca też rozumiem pojęcia, tj:
**archetyp **- rozumiem to tak, ze archetypy to takie wzorce na projekt - jeśli chcemy tworzyc projekt na springu mvc wybieramy jakis archetyp z sprigmvc w nazwie, jeśli np JSF to cos z jsf, a jesli coś prostego, nie webowe to podstawowy: maven-archetype-quickstart

repositories - same repozytoria jako repozytoria to może są dość jasne, jednak jeśli np. chce dodac dependencies JSF - to dodaje to w pom.xml i ten podczas uruchomienia aplikacji szuka najpierw: w repo lokalnym (czyli na komputerze - jesli np juz kiedys uzywalem JSF to wezmie z tego repo na komputerze), jesli nie znajdzie szuka w repo mavena w internecie, a jesli nie znajdzie - i tutaj moge deklarować własne repozytoria, tak? w jaki sposób np?:P

własny jar - jesli np stworze sobie jakies pare klas które będą robić "coś tam" - jak moge je dodac do projektu mavenovego?

Framework support.. - opcja z intellij, która widnieje pod prawym przyciskiem myszy jak klikniemy na projekt. wczesniej fajnie moglem sobie dodac w ten sposób bilbioteki, rozumiem, że teraz nie ma szans zeby tak robić, bo maven opiera sie na pom.xml, a nie na dodawaniu bilbiotek tak jak w przypadku zwykłego projektu intellij?

Zacząłem, wybrałem archetyp maven-archetype-webapp i chcialem zrobić w nim jakis helloworld jsf, a potem primefaces. Stworzyłem go, poszukalem dependencies w googlu (do jsf), wrzuciłem je, potem pojawiły się jakieś powiadomienia, ze brak facelets, zeby ustawić, kliknalem zeby ustawił, potem coś tam jeszcze coś tam jeszcze, zrobilem tomacata na localhostcie i uruchomiłem i pokazało jaki ogromny stacktrace z błędami

Generalnie mój problem polega na tym, że póki co nie widze ułatwienia w używaniu Mavena (oprócz tego, ze duzo IDE go obsluguje). Wręcz przeciwnie - używa mi się go ciężej bo strasznie duzo rozdrabniania itd - a na końcu sie okazuje, że i tak coś źle skonfigurowane i nie działa. Pewnie dla dużej częsci z was 4programmersowych użytkowników - maven to błahostka bo juz wiecie dużo, jednak dla mnie początkującego to mordęga.

Mavena zacząłem poznawać z paru powodów, pierwsze, że duzo tutoriali jest tworzone z jego pomocą (ostatnio chcialem porobić cos z JPA, Hibernate i to mnie zainspirowało bo co strona, co krok był Maven), drugie, że potem w ewentualnej pracy, stażu - na 99% też będą stosować Mavena to już bede miał "gładki start", trzecie, że jak pisałem mozna z wielu IDE otwierać i na github można wrzucić i ludziom dawać bardziej "elastycznie" :P

Jakieś słowa otuchy, porady, sugestie, żebym zmienił specjalizacje bo się nie nadaje etc? :D

0

repositories - same repozytoria jako repozytoria to może są dość jasne, jednak jeśli np. chce dodac dependencies JSF - to dodaje to w pom.xml i ten podczas uruchomienia aplikacji szuka najpierw: w repo lokalnym (czyli na komputerze - jesli np juz kiedys uzywalem JSF to wezmie z tego repo na komputerze), jesli nie znajdzie szuka w repo mavena w internecie, a jesli nie znajdzie - i tutaj moge deklarować własne repozytoria, tak? w jaki sposób np?:P

Dodając w pomie <repository>? ;]

własny jar - jesli np stworze sobie jakies pare klas które będą robić "coś tam" - jak moge je dodac do projektu mavenovego?

Najprosciej wrzucic go do swojego lokalnego repozytorium. To zaś najprościej zrobić tak, że ten projekt też będzie projektem mavenowym i wykonasz na nim maven install

Framework support.. - opcja z intellij, która widnieje pod prawym przyciskiem myszy jak klikniemy na projekt. wczesniej fajnie moglem sobie dodac w ten sposób bilbioteki, rozumiem, że teraz nie ma szans zeby tak robić, bo maven opiera sie na pom.xml, a nie na dodawaniu bilbiotek tak jak w przypadku zwykłego projektu intellij?

jedno z drugim nie ma nic wspólnego. Framework support i konfiguracja pluginu dla twojego projektu powoduje tylko i wyłącznie odpowiednie skonfigurowanie IntelliJ, nie ma wpływu na kod projektu.

Maven jest fajny, bo nie musisz kombinować 3 dni szukając jarów, a potem ich commitować do repozytorium żeby sie dało z tego projektu korzystać po ściągnięciu. Pozwala ci też automatyzować pewne kroki w działaniu aplikacji (budowanie, odpalanie testów, odpalanie aplikacji). Co nie znaczy że nie wprowadza pewnego narzutu konfiguracyjnego!
Mam wrażenie że twój problem jest taki ze słabo znasz javę i technologie enterprise, a nie że maven ci sprawia problemy. Bo przecież cały projekt wygląda tak samo niezależnie od tego czy używasz mavena czy nie. Różnica jest tylko taka że teraz musisz ROZUMIEĆ co się w projekcie dzieje a nie kliknąć 3 razy i poczekać aż kreator cośtam nageneruje.

0

@Shalom

Dodając w pomie <repository>? ;]

No tak tylko tam jest pare parametrów i niekoniecznie wiem jak z tego korzystać :P

To zaś najprościej zrobić tak, że ten projekt też będzie projektem mavenowym i wykonasz na nim maven install

Czyli maven install sluzy do tego, zeby zawrzeć jeden projekt w drugim powiedzmy?

Masz racje @Shalom, w JEE jestem jeszcze świeży i dopiero kojarze fakty i staram się wszystko łączyć w całość. próbuje poznawać coś, potem cos jeszcze i z tego cos zrobic i tak do przodu :P
Ekspertem nie jestem w tym, ale generalnie myślałem, że wiem co sie w projekcie dzieje jak robiłem File->new project w IDE, a sie okazuje że wielkie g wiedziałem :) Skąd mogę dokładniej poznać zasady budowania projektu? (nie chodzi o dukanie całej dokumentacji mavena, tylko coś takiego co mi od ogółu do szczególu pokaże na czym to polega)

Np mapowanie - jak teraz zrobiłem jakas prosta strone a.xhtml i w pliku web.xml (który w projektach z IDE juz miał jakis kod, ten natomiast ma tylko <web-app> i na tym koniec) dodałem servlet, mapowanie pod *.xhtml *.jsf *.faces - i od momentu dodania już w ogóle a.xhtml sie nie odpala. Jak to wyrzuce to działa, ale tylko pod a.xhtml
Większość problemów wynika zapewne z tego ze nie dokladnie znam zasady działania JEE, ale w koncu do tego dąże, żeby je poznać ;) między innymi dlatego chwytam się Mavena, nie zostając przy standardowych projektach z IDE

mam nadzieje, że robię dobrze ;)

mógłbyś mi poradzić jak ogarnąć budowę aplikacji JEE i jak zacząc mavenem sie poslugiwać w miare sprawnie? (zeby przejmowac sie kodowaniem, a nie ustawianiem projektu :D)

0
  1. Nie. Maven install służy do "zainstalowania" w lokalnym repozytorium artefaktów z jakiegoś projektu.
  2. Najprościej będzie pobrac jakiś prosty przykładowy projekt w danej technologii i sobie popatrzec gdzie co leży i czemu ;]
  3. Przeleć sobie jakieś ładne tutoriale, np. http://jaiswaltraining.com/ (niech nie zwiedzie cię marny wygląd stronki! ;) )
0

@Shalom
1.Czyli czym dokladnie jest artefakt? jako artifactId podaje nazwe projektu z tego co dostrzegłem
2.Pomysł dobry ;) do tej pory ogladam przykładowe aplikacje szukajac po googlu, stackoverflow, jakies blogi developerów itp. jak to ludzie pisza i czemu tak a nie inaczej
3.Aktualnie czytałem tutoriale na mkyong.com - ale momentami trochę mało jasne czemu tak a nie inaczej. O jaiswaltraining.com slyszalem i nawet pare razy czytałem tam o JSF :P Spróbuje tam poszperać może cos zakumam

Chciałbym tak porządnie fest znać zasadę działania samych aplikacji webowych, i nie chodzi mi tutaj o to jak działaja klasy, interfejsy itd. tylko to jak np. dziala mapowanie, czemu np. w eclipse miałęm cos w stylu localhost:8080/nazwa_projektu/strona.rozszerzenie, a w IntelliJ mam już localhost:8080/strona.rozszerzenie, i z tego co sie spodziewam Maven ma jeszcze co innego bo nie działa mi mapowanie :D

Jak znam życie żadna ksiązka, tutorial czy przykład mi tego nie wyjaśni, tylko praktyka praktyka i jeszcze raz zapieprzanie. Ale jakis wprowadzajacy tutorial byłby wporzadku :)

0
  1. To jest na przykład jar z twoim projektem ;]
    W eclipse mogłeś sobie ustawić gdzie ma deployować twój projekte. W IntelliJ też zresztą możesz sobie to ustawić.
    Zrozum że maven NIE MA Z TYM NIC WSPÓLNEGO!
0

@Shalom
Hmm czyli deployowanie aplikacji do .war itd. to nie jest zadanie mavena a srodowiska?
W takim razie do czego dokładnie i głównie służy maven? - może to mi wyjaśni więcej :) (uprzedze ze definicje w google juz czytałem)

Np mapowanie stron, dołączanie bilbiotek czy to z repo mavena czy z naszego komputera (naszych własnych np.) - czy to są zadania dla mavena?
Lub dodawanie facet's -ów, żeby np. pokazywała mi się składnia JSF pod ctrl-spacja musialem dodac facet jsfa, w przypadku mavena IDE przypomina ze trzeba go dodac i jak zaakceptuje to robi to za mnie, ale właściwie nie wiem co on zmienia w całym projekcie. Pare razy próbowałem obejrzec caly projekt przed kliknieciem akceptacji z facets, pozniej zaakceptowalem i próbowałem odnalezc zmiane - nie udało sie :)

0

Budowanie (!) aplikacji maven moze ci automatyzować. Deployowanie niby też, bo jest do tego masa pluginów, ale nie polecam tego na początek.
Maven służy do prostego zarządzania zależnościami i budowania aplikacji. Dzięki mavenowi możesz ściagnać z githuba jakis projekt, wpisać
mvn install
i ci go zbuduje, ściągając wszystko co potrzebne.

Mapowanie stron oczywiście że nie! Dołączanie bibliotek i budowanie aplikacji tak.
Dodawanie konfiguracji IDE to nie jest za bardzo zadanie dla mavena, chociaż są pluginy które potrafią wygenerować ci taką konfigurację (np. mvn eclipse:eclipse).
Bo dodanie konfiguracji facets nie powoduje zmian w plikach projektu! To zmienia tylko konfigurację IDE dla tego projektu. Z punktu widzenia kodu nie ma zadnej różnicy. Mam wrażenie ze nie odróżniasz kodu aplikacji od IDE. Przecież na upartego to i w notatniku mozesz napisać aplikację i kompilować z palca i ręczine zbudować jara!

1 użytkowników online, w tym zalogowanych: 0, gości: 1