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 projektuartifact 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. 😉

 

 

 

Kamil Klimek

Od 2016 jestem programistą Java. Przez pierwsze 4 lata pracowałem jako Full Stack Java Developer. Później postanowiłem postawić nacisk na Javę, żeby jeszcze lepiej ją poznać.

Subscribe
Powiadom o
guest
9 komentarzy
najstarszy
najnowszy oceniany
Inline Feedbacks
View all comments
Poul
Poul
5 lat temu

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.

Kamil Klimek
Kamil Klimek
5 lat temu
Reply to  Poul

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”;

Poul
Poul
5 lat temu
Reply to  Kamil Klimek

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

Dawid Orzycki
Dawid Orzycki
5 lat temu
Reply to  Poul

Dzieki za ta wstawke do POMa odnosnie wersji Mavena – ten sam blad mi wyskoczyl.

Kamil Klimek
Kamil Klimek
5 lat temu
Reply to  Dawid Orzycki

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. 😉

Krystian
Krystian
3 lat temu

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>

Krystian
Krystian
3 lat temu
Reply to  Kamil Klimek

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…

9
0
Would love your thoughts, please comment.x