Ръчно инсталиране на Maven и конфигурация на локално repository

Какво е “Maven” ?

maven_logoMaven е проект, чиято цел най – общо казано е да улесни писането и компилирането на проекти на Java. Целта е да има универсално средство за build на проекта, така че когато добавяш нови елементи към проекта, да е лесно и удобно за нов build, а не с часове да пишеш скриптове. Конфигурацията за build-а на проекта (т.е. нещо като build script) се намира във файл „project object model” (POM.xml).

Голямото предимство – repository – то !

repositoryЕдно от предимствата, заради които на мен ми харесва идеята за Maven е конфигурацията на repository. Ще се зачудите –  кое хранилище ? – repository на библиотеки – артефактите. В Ant скрипта трябва да се описва всяка една библиотека, от къде идва, докато тук, има две хранилища – едно локално, което се намира при Вас, на вашия компютър и едно централно.
Схемата е следната: когато се компилира нещо за първи път и в локалното хранилище няма необходимите библиотеки, те се вземат от централното – в повечето случаи –  автоматично.

Свалят се и проекта се компилира. При следващо компилиране, вече имате библиотеките, готови на разположение.

Възможната конфигурация – предимството !

В една организация, в която работят няколко човека по един и същи код (проект), ако има забити пътища в build скрипта, сами се сещате и вероятно знаете, за неудобства, които се получават – всеки трябва да има библиотеките, всеки се съобразява къде какво е инсталирал, за да може да съвпаднат пътищата, с цел да може да се компилира. Другия вариант е всеки да има свой build скрипт, но когато дойде нов човек в екипа се хваща за главата: как да започне да работи – отделя няколко дни, за да настрои работната си станция. Тук някой може да каже, че  използва идентични виртуални машини – това е чудесно, но ако има нова версия на библиотеките, ако има нови библиотеки и т.н. проблемът е същият. Идеята е, че идентичните виртуални машини са чудесно решение, но няма как template – а да се поддържа постоянно актуален.

Решението – Maven

Организацията може така да си конфигурира хранилищата, Maven_central_repositoryче когато някой поиска да се включи в проекта, само го дърпа от сорс контрол системата (SVN, GIT или др.), пуска build и всички артефакти се изтеглят при него автоматично. Как се получава това? Организацията прави едно централно хранилище с всички необходими библиотеки (артефакти). На локалната станция на всеки от програмистите, Maven е настроен, да гледа в локалното repository и ако  там няма артефакти  –  се обръща към централното хранилище  на организацията. По този начин, дори да има нова версия на библиотека, тя се поставя в централното repository и се разпространява автоматично. Ако има артефакти, които не са публично достъпни, например на Oracle*, не е нужно тези артефакти да се дават ръчно на всеки, а е необходимо само да се сложат в централното хранилище.
Ето още по – хубавото: ако организацията има автоматична build система, повечето такива поддържат Maven, което означава, че не е нужно и на нея да се описват пътища и т.н. Системата взема кода от сорс контрол системата, извършва компилацията – пуска тестовете и прави deploy на проекта, на колкото е необходимо сървъри –  автоматично без никакъв проблем. Фигурата по-горе представя примерна схема на тези действия.

* Повечето библиотеки не са достъпни директно през интернет, а трябва да си инсталирал нещо, за да ги имаш – например Weblogic Server.

Структура на Maven проект:

maven_structureКакто се вижда от структурата, в Maven е предвидено всеки проект да има тестове и ги пуска автоматично при билдване, ако са налични!

Повече информация за Maven, може да намерите на официалния им сайт Тук.

Някои от вътрешните линкове, които ще са ви полезни:
Как да започнете Тук.
Maven за 5 мин. Тук.

 

Инсталиране и конфигуриране.

Ще покажа най – базовото инсталиране на Maven за Windows, къде и как да конфигурираме локалното хранилище (repository).
1.   Сваля се последна версия на Maven от Тук – файл с име apache-maven-x.x.x-bin.zip, където  „x.x.x” е версията.
2.   Разархивира се в директорията, където желаете да е инсталиран. В моя случай : „D:\maven“ , съответно се получава директория „D:\maven\apache-maven-3.2.5
3.   В поддиректорията „conf” („D:\maven\apache-maven-3.2.5\conf“) се намира файл-а  „settings.xml“. Отваря се с текстов редактор и в секцията настройки има закоментиран пример, как се оказва, къде да бъде локалното repository

default_repository
От обяснението се вижда, че ако не се зададе ръчно, меспоположението му ще бъде „${user.home}/.m2/repository“. Аз предпочитам сам да задам местоположението, освен това не желая repository-то да е на “C:\” дял, а и винаги е по-добре нещата да са събрани и подредени. За това след коментара (препоръчвам да си запазите конментара), добавете един ред, където описвате пътя до вашето repository. В моя случай това е „D:\maven\.m2\repository“. След добавяне на този ред, файлът изглежда както е показан по-долу.

local_repository

4.    За да работи коректно Maven, трябва да го прибавите в пътищата на Windows. Това става по следния начин:
–    My Computer (This PC – windows 8)  десен бутон properties –> Advance system settings –> Advanced –> Environment variables. 
До properties можете да достигнете и с бърза комбинация на (windows button + Pause)

Enviroment_variables
–    В някои случаи, добавянето в “user variables”  работи. В моя, не се получава и за да съм сигурен че работят нещата, както трябва, ги добавям в “System Variables” на показалото се меню.
–    Чрез бутона „New..”  добавяте

  • Name =  M2_HOME , value = D:\maven\apache-maven-3.2.5 m2_home
    Това е в моя случай, ако се намира на друго място при Вас, сложете Вашия път, името си остава същото
  • Name = M2 , value = %M2_HOME%\bin
    Това означава, че стойността на M2 зависи от стойността на M2_HOME, чрез „%“ извикваме зададената стойност

За да работи Maven, му е необходима Java и по-конкретно JDK. За да е всичко коректно, ако не сте си добавили пътя на JAVA_HOME към JDK направете и това като “System Variables”. Ако случайно нямате JDK (което ме съмнява, все пак говорим за build на Java проекти) може да си го дръпнете и инсталирате от Тук

  • Name = JAVA_HOME, value = C:\Program Files\Java\jdk1.7.0_51
    Това е пътя до моята Java, ако Вашата Java версия е различна, пътят също ще е различен. system_variables
  • На променливата “Path” давате “edit” и внимателно в края на реда, слагате знак за разделител – точка и запетая „;“ и добавяте %M2%, а след това  и %JAVA_HOME%\bin. Внимавайте да не изтриете някой друг път!

add_java_maven_path

Натискате „ОК“ и затваряте всичките прозорци за тези настройки – те вече не са необходими.

5.   Проверете дали всичко работи:
–    Отворете „Command prompt” (windows button + R, пише се cmd)
–    Проверка на Java

  •  команда> java –version

изкарва информация за текущата в системата java версия (тъй като може да имате няколко, уверете се, че е точно тази която искате)

  •  команда> “%JAVA_HOME%” – в кавички, ще ви покаже пътя, който сте въвели. Кавичките са заради интервала в “Programs files”
  •  команда> mvn –version – ще Ви покаже версията на Maven

Ако някоя от изброените команди не връща коректен резултат, проверете отново пътищата.
След това отворете отново (нова) конзола и опитайте пак.

6.    За да тествате дали всичко работи правилно, направете някъде една тестова директория, отворете в нея Command prompt – най – лесно става като задържите „Shift” клавиша натиснат и натиснете някъде в текущата директория десен бутон на мишката. В отвореното меню се появява опцията „Open command window here”. След това изпълнeте препоръчаната от Maven команда за създаване на нов проект:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

  •   Ще видите как се свалят необходимите библиотеки в хранилището и се билдва нов проект.

Честито –  Имате успешно инсталиран Maven Smile