Czyję się obco, ponieważ:
- Pracuję z kolegami, którzy mają duuuużo więcej doświadczenia niż ja. Ale to jest fajne ponieważ mogę się uczyć od nich i brać dobry przykład z innych.
- Jestem tu nowy. Ostatnio pracowałem komercyjnie pełną gębą z JAVA w czasach JAVA 1.3. Od tej ery minęło już sporo czasu. JAVA 1.4. 1.5. 1.6. 1.7. Każde to inna era w świecie JAVA. W zasadzie muszę się wszystkiego uczyć od nowa.
- Dotychczas pracowałem z dużymi bazami danych (głównie data warehouse). I programowaniem raczej strukturalnym niż obiektowym. Przetwarzaniem grupowym a nie pracą na pojedynczych obiektach. Te przeskok na zupełnie inny tor.
- Nie chcę obciążać kolegów (a i tak to częściowo robię) przez pomoc/edukacje dla mnie. W projekcie jest zapi**** i nie mają czasu aby mnie wdrażać.
- Wskoczyłem do już toczącego się projektu, który miał trwać łącznie ~6 tygodni.
Maven to taki sposób opisywania/budowania/uruchamiania/... projektów.
Składa się z wielu plików .pom opisujących jak pracować z projektami. A każdy projekt jest inny i korzysta z setek (tysięcy) innych projektów.
Aby to wszystko współdziałało opisujemy projekty, ich wersje i zależności od innych projektów (w wersjach). Maven sam tym odpowiednio zarządza. Aby ściągnąć takie "projekty" musimy mieć otwarty dostęp do internetu (mało bezpieczne) lub też wystawione wybrane repozytoria dla nas (np. na jakimś serwerze działającym jako specyficzne proxy...).
Maven nie wymaga skomplikowanej instalacji. Rozpakować i tyle.
Konfiguracja jednak się przydaje:
- Zazwyczaj instalujemy JDK. I ustawiamy zmienne środowiskowe: JAVA_HOME oraz dopisujemy ${JAVA_HOME}/bin do $PATH.
- Możemy ustawić zmienną M2_HOME - tam maven ściąga masę plików (i trzyma konfigurację naszego "komputera").
- Maven'a z założenia uruchamiamy gdziekolwiek i powinien zawsze działać tak samo lub podobnie. Nie podajemy parametrów - on nie jest od tego. Zazwyczaj odpalamy "mvn clean install" lub coś podobnego. "clean" i "install" to profile, które chcemy włączyć.
- Ale ja jednak chcę mieć konfigurację inną niż koledzy - oni nie lubią kolorków, czytelności, vim'a i innych (w przeciwieństwie do mnie). Tutaj mam 2 możliwości: zmienne mavena'a (maven properties) i/lub profile maven'a. W skrócie: mogę stworzyć własne profile nie będące częścią projektu. Profile mogą być zawsze aktywne. I mogą zmienić/przesłonić dowolną inną rzecz w projekcie.
Zazwyczaj nasz projekt zależy od wielu projektów. A te od innych projektów. A co jeśli te projekty zależą od jednego tego samego projektu ale w różnych wersjach? I tu się przydaje to, że projekt definiujemy przez parę grupa+artefakt.
Mam nadzieję, że dobrze to rozumiem... jak do czegoś sensownego dojdę to zmienę ten wpis... może błędy poprawię?
No comments:
Post a Comment