Tworzenie projektu Maven
W poprzedniej lekcji dowiedziałeś się czysto teoretycznie czym jest oraz do czego służy Maven. Czas przejść do części praktycznej – czyli tworzenia projektu.
Tak jak wspominałem – Maven będziemy wykorzystywać głównie do zaciągania zewnętrznych bibliotek oraz uruchamianiu testów jednostkowych.
Tworzenie projektu
Najprościej będzie przenieść istniejący projekt (Management) przez stworzenie nowego projektu Maven w Intellij Idea raz przekopiowaniu plików źródłowych – są tam tylko cztery klasy, więc zajmie to chwilę. 😉
Na początek wybierzmy New Project
Kolejno wybieramy Maven Project. Mamy tutaj do wyboru też archetypy – czyli startowe szablony np. frameworków, jednak my stworzymy projekt bez archetypu.
Klikając Next wpisujemy nazwę grupy projektu, artifact id np. nazwę aplikacji oraz wersję projektu
W nastepnym kroku wybieramy nazwę projektu i jego lokalizację.
Klikając Finish powinien utworzyć nam się projekt Maven. Od razu włączyć auto importowanie zmian w Mavenie (Enable Auto-Import) – czyli po każdej zmianie w Pom zostanie automatycznie zaciągnięta odpowiednia paczka. 😉
Jeżeli wszystko poszło po naszej myśli powinniśmy otrzymać taką strukturę projektu:
Jak widać nasz plik pom.xml zawiera póki co podstawowe informację o projekcie, w katalogu src/main/java będziemy umieszczać nasz kod źródłowy Java, zaś w src/test/java będą leżały nasze testy jednostkowe. Przejdźmy teraz do przekopiowania klas z aplikacji domowej z drugiego tygodnia. 😉
Czyli kopiujemy wszystkie nasze klasy ze starego projektu do nowego projektu do folderu src/main/java, u mnie wygląda to tak:
Skoro nasz projekt został przeniesiony to też musimy stworzyć ponownie repozytorium lokalne przy użyciu:
git init .
Warto nakazać gitowi zignorować niektóre foldery, aby nie wysyłał je na zdalne rpeozytorium. Takimi folderami są: .idea – są to ustawienia projektu, tego nie powinniśmy wysyłac, ponieważ ktoś może używać innego środowiska niż my. Powinniśmy też nie wysyłać folderu target, ponieważ w nim są generowane pliki wynikowe, których nie ma co przechowywać, ponieważ każdy w każdej chwili na bazie kodu źródłowego może je wygenerować.
Aby zignorować pliki otwieramy w naszym projekcie: (trzeba włączyć pokazywanie ukryty plików i folderów na Windowsie)
(ścieżka projektu)/.git/info
Oraz otworzyć przez notatnik plik exclude, a jego struktura powinna wyglądać mniej więcej tak:
# git ls-files --others --exclude-from=.git/info/exclude # Lines that start with '#' are comments. # For a project mostly in C, the following would be a good set of # exclude patterns (uncomment them if you want to use them): # *.[oa] # *~ /.idea /target
Te pierwsze lnie z hashami mogą być pominiętę, ponieważ są to tylko komentarze
Gdy mamy już to wszystko zrobione to czas na wysłanie zmiany projektu na projekt Maven
git add *
Tworzymy commit:
git commit -m "Switch project to maven project"
Musimy dodać ponownie adres do naszego repozytorium:
git remote add origin [adres]
I teraz możemy wypchnąć nasze zmiany na zdalne repozytorium przy użyciu:
git push --force origin master
Użyliśmy komendy push z opcją –force to znaczy, żeby nie patrzył na nic tylko za wszelką cenę wypchnął nasze zmiany na repozytorium. W tym przypadku możemy to zrobić, jednak zawsze warto zastanowić się czy nasze zmiany przy użyciu force nie będą szkodliwe. 😉
I teraz choć projekt Maven jest utworzony to możemy jedynie go zbudować przy użyciu Intellij Idea – co dla mnie jest męczące. Wolę mieć dostęp do mavena (tak jak do gita przy użyciu komendy git) z poziomu konsoli – używając komendy mvn. Czas, więc na samą instalację Mavena.
Instalacja Mavena
JAVA_HOME
Na początku musimy ustawić zmienną środowiskową JAVA_HOME – czyli aby JDK było dostępne z poziomu konsoli. Aby było to możliwe w zmiennej środowiskowej musimy ustawić ścieżkę do folderu /bin gdzie znajduję się JDK.
Najpierw musimy znaleźc lokalizację JDK, u mnie jest to: C:\Program Files\Java\jdk1.8.0_181 – dlatego w konsoli muszę wpisać:
setx JAVA_HOME "C:\Program Files\Java\jdk1.8.0_181";
Następnie zmienną JAVA_HOME muszę dodać do zmiennych środowisko – tak, aby po każdym uruchomieniu komputera nie musieć ustawiać jej na nowo.
setx PATH "%PATH%;%JAVA_HOME%\bin";
Czyli do zmiennej PATH dopisaliśmy JAVA_HOME/bin czyli ścieżkę do folderu bin w katalogu JDK.
Musimy teraz zamknąć i ponownie włączyć konsolę i wpisać:
echo %JAVA_HOME%
Jeżeli zainstalowaliśmy poprawnie powinniśmy uzyskać odpowiedź:
C:\Program Files\Java\jdk1.8.0_181
Skoro mamy już ustawioną zmienną śrowiskową JAVA_HOME to czas przejść dalej.
Maven
Na początku musimy pobrać Mavena z tej strony, dla Windowsa dokładnie stąd.
Mając już pobranego Mavena rozpakowujemy go i przenosimy np. do C:\Program Files u mnie scieżka wygląda tak:
C:\Program Files\apache-maven-3.5.4
Czas na dodanie mavena do zmiennych środowiskowych, robimy to podobnie jak w przypadku JAVA_HOME.
setx MAVEN "C:\Program Files\apache-maven-3.5.4";
Oraz dodanie do zmiennej PATH
setx PATH "%PATH%;%MAVEN%\bin";
Po ponownym uruchomieniu konsoli po wpisaniu:
mvn -version
Powinniśmy otrzymać zwrotkę w postaci:
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T19:33:14+01:00) Maven home: C:\Program Files\apache-maven-3.5.4\bin\.. Java version: 1.8.0_181, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_181\jre Default locale: pl_PL, platform encoding: Cp1250 OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
To oznacza, że maven został zainstalowany poprawnie. 😉
Budowanie projektu
Wróćmy do stworzonego wczesniej Maven projektu. Wcześniej aplikację uruchamialiśmy przy użyciu SHIFT+F10 wskazując na metodę main, teraz możemy oczywiście w taki sam sposób uruchamiać nasz projekt z poziomu idee.
Maven przyda nam się do uruchamiania wszystkich testów jednostkowych, załączania zależności (już w następnej lekcji) oraz budowania finalnej paczki, którą będzie można uruchomić wszędzie.
Włączmy ponownie Intellij Idea, aby tamtejsza konsola mogła również zaciągnąć zmiany z PATH i widzieć Mavena. Jeżeli mamy już otwarty projekt w konsoli (ALT+F12) wpiszmy:
mvn install
W ten o to sposób zostanie uruchomiony Maven oraz zacznie przechodzić przez cały life cycle – od sprawdzania, przez testowania, aż do zbudowania całej paczki. Po poprawnym zbudowaniu w naszym katalogu powinien pojawić się folder /target, w którym znajduję się właśnie zbudowany JAR, którego możemy już uruchamiać wszędzie na wirtualnej maszynie Javy – JRE.
Możemy również zbudować naszą aplikację np. pomijając testy jednostkowe (choć nie jest to wskazane na deployu, takie rzeczy można zrobić, gdy szybko chcemy zbudować paczkę do szybkiego sprawdzenia czegoś ;))
mvn install -DskipTests
I w tym momencie również zbudowała się paczka tylko nie były uruchamiane testy jednostkowe z folderu /test.
Można również zrobić tzw. clean installa – czyli najpierw cały folder /target jest usuwany, a następnie od nowa uruchamiany maven lifecycle.
mvn clean install
I efekt działania jest taki sam. 😉
Podsumowanie
W tej lekcji dowiedziałeś się do czego służy Maven oraz w jakim celu będziemy my go wykorzystywać. Pokazałem Ci również z jakich komend zazwyczaj się korzysta, są to podstawowe komendy potrzebne do budowania paczki. 😉
W następnej lekcji zajmiemy się dodaniem pierwszej dependency i testami jednostkowymi. 😉
Po wpisaniu komendy setx PATH “%PATH%;%JAVA_HOME%bin”; wyświetla mi, że
ERROR: Invalid syntax. Default option is not allowed more than ‘2’ time(s).
Type “SETX /?” for usage.
Czy na początku wywołałeś: setx JAVA_HOME “C:Program FilesJavajdk1.8.0_181” ?
Jeżeli tak to czy: echo %JAVA_HOME% zwraca ścieżkę do JDK?
Wpisz na początku “echo %PATH%” i wyslij mi co pokazuję Ci konsole.
Nie mam pojęcia co może być rozwiązaniem jednak spróbuj wywołać taką komendę:
setx PATH “%PATH%;%JAVA_HOME%bin”;
Problem został naprawiony, przynajmniej na to wygląda, bo udało mi się też z sukcesem zainstalować Mavena, ale musiałem dopisując ściężkę /bin do PATH ominąć pierwszą cześć komendy, którą pokazałeś, czyli zamiast
setx PATH “%PATH%;%JAVA_HOME%bin”; wpisałem setx PATH “%JAVA_HOME%bin”;
i wtedy poszło,
po wywołaniu echo %JAVA_HOME% zwraca mi sciezke do JDK jak nalezy, a po wywołaniu eho %PATH% dostałem długa litanie ścieżek, a dokładnie:
C:Program Files (x86)Common FilesOracleJavajavapath;C:ProgramDataOracleJavajavapath;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Program Files (x86)NVIDIA CorporationPhysXCommon;C:WINDOWSsystem32
;C:WINDOWS;C:WINDOWSSystem32Wbem;C:WINDOWSSystem32WindowsPowerShellv1.0;C:Program FilesJavajdk-9.0.4bin;C:Program Filesnodejs;C:WINDOWSSystem32OpenSSH;C:Program FilesGitcmd;C:Program Filesapache-maven-3.5.4bin
Dodam jeszcze, że przy instalacji Maven, musiałem do POM.xml dopisać
1.6
1.6
bo miałem failure, że mam starą wersje 1.5 source i target
Dzieki za ta wstawke do POMa odnosnie wersji Mavena – ten sam blad mi wyskoczyl.
Super, że problem tak szybko się rozwiązał. Ja niestety nie napotkałem na takie problemy podczas instalacji – choć to są na szczęście tylko błędy konfiguracji środowiska. 😉
Utknąłem w momencie instalacji MAVEN-a, a dokładniej w momencie dodania mavena do zmiennych środowiskowych.
Po dodaniu i wpisaniu komendy “mvn -version”, wyskakuje mi taki oto monit “‘mvn’ is not recognized as an internal or external command,
operable program or batch file.”
Oto kod:
C:\Users\kempu\IdeaProjects\1024>setx MAVEN “C:\Program Files\apache-maven-3.5.4”;
SUCCESS: Specified value was saved.
C:\Users\kempu\IdeaProjects\1024>setx PATH “%PATH%;%MAVEN%\bin”;
WARNING: The data being saved is truncated to 1024 characters.
SUCCESS: Specified value was saved.
C:\Users\kempu\IdeaProjects\1024>mvn -version
‘mvn’ is not recognized as an internal or external command,
operable program or batch file.
C:\Users\kempu\IdeaProjects\1024>
Próbowałeś zrestartować komputer? Po zmianie zmiennych środowiskowych, trzeba zawsze uruchomić konsolę ponownie, jeśli korzystasz z konsoli w IntelliJ, to musisz zrestartować całe IDE. W przypadku, gdy restart nie pomoże, to proponuję uruchomić ponownie komputer. 😉
Niestety to również nie pomaga. Wywołanie echo JAVA_HOME oraz MAVEN zwraca poprawną ścieżkę plików, więc nie wiem, o co chodzi.
C:\Users\kempu\IdeaProjects\Testy MAVEN>setx MAVEN “C:\Program Files\apache-maven-3.5.4”;
SUCCESS: Specified value was saved.
C:\Users\kempu\IdeaProjects\Testy MAVEN>setx PATH “%PATH%;%MAVEN%\bin”;
SUCCESS: Specified value was saved.
C:\Users\kempu\IdeaProjects\Testy MAVEN>mvn -version
‘mvn’ is not recognized as an internal or external command,
operable program or batch file.
C:\Users\kempu\IdeaProjects\Testy MAVEN>echo %JAVA_HOME%
C:\Program Files\Java\jdk-15.0.2;
C:\Users\kempu\IdeaProjects\Testy MAVEN>echo %MAVEN%
C:\Program Files\apache-maven-3.5.4;
Będę wdzięczny za pomoc bo nie mogę iść dalej z kursem…
Najłatwiej będzie jak jak wrzucisz tutaj, to co Ci zwróci komenda:
Może ścieżka w całości nie dopisuje się do path i ucina w połowie.