1.1 Големи програми

Вече научихме How да пишем малки програми, така че сега ще научим How да пишем големи. Както знаете, колкото по-голяма и по-сложна е програмата, толкова повече пари се плащат за нейното развитие :) И нека започнем с малко предистория ...

Тъй като програмите нарастват по размер, разработчиците са изпequalsи пред две нови предизвикателства:

  • Голям брой хора работят по една и съща програма.
  • Няма такъв човек, който да знае целия code на програмата.

Много често започват да възникват ситуации, когато програмист поправи грешка на едно място в програмата и в същото време счупи нещо в друго. Документацията за изданието дори има тази шега:

Списък на промените:

  • Коригирани стари грешки :)
  • Добавих нови :(

Тогава те излязоха с два подхода за решаване на този проблем: технически и управленски.

Техническият подход беше, че програмите бяха разделени на части: библиотеки и модули . Всеки такъв модул беше малка тухла, от която след това бяха изградени големи проекти. Библиотеките са такива универсални компоненти, които могат да се използват в различни програми.

Управленският подход беше още по-интересен - те ограничиха броя на хората, които могат да работят по един проект/библиотека. Емпирично те дори излязоха с правило: отборът трябва да е толкова голям, че "да може да се нахрани с две пици " . Това обикновено означава, че ако по даден проект работят повече от 8 души , той трябва да бъде разделен на два проекта.

В общността на разработчиците на Java стана популярно да се пишат библиотеки за всяHowви поводи и да се правят публично достъпни. Така Java програмистите не можеха да напишат отново същия code (който често беше суров и съдържаше грешки), а използват готови и доказани решения .

Допълнителен стимул беше фактът, че езикът Java придоби голяма популярност при писането на решения от страна на сървъра (той работеше на бекенда). Първо, сървърният софтуер има по-високи изисквания за надеждност и използването на изпитани във времето библиотеки винаги е за предпочитане пред писането на собствен code.

Второ, сървърите практически нямат ограничения за размера на codeа. Разработчикът на мобилно приложение се опитва да го натъпче в 10 мегаbyteа, десктоп приложение - в 100 мегаbyteа. И Java backend разработчик може да натъпче няколко десетки гигаbyteа библиотеки в проект и никой няма да му каже нито дума :)

Между другото, това не е шега. Можете лесно да попаднете на бекенд проект с няколко десетки модула и няколкостотин библиотеки. Но стана изключително трудно да се опишат (и променят!) компorращи скриптове за такива проекти.

И тогава се появи Мейвън.

1.2 Въведение в Maven

Maven е специална "рамка" за управление на изграждането на проекти. Той стандартизира 3 неща:
  • Описание на проекта;
  • Скриптове за изграждане на проекти;
  • Зависимости между библиотеки.

Предшественикът на Maven беше Ant , а неговият наследник е Gradle . Но именно Maven разработи и усъвършенства трите изброени стандарта, а също така регулира тяхното взаимодействие. Именно той изведе работата на Java общностите на ново ниво. Нека го разгледаме по-подробно.

Мейвън

Технически Maven е специална програма/услуга, чиято основна цел е да управлява процеса на изграждане на проекти. Може просто да бъде изтеглен като архив и разопакован във всяка директория. За това нямате нужда от специален инсталатор.

Тя няма графичен интерфейс - всички команди й се дават от конзолата . За да бъде още по-удобно да работите с него, се препоръчва да регистрирате специални променливи на средата във вашата операционна система.

Maven също има специално хранorще (директория / папка), където съхранява библиотеките, които използва при изграждане на проекти. Ще трябва да изберете папка на диска и да я зададете като хранorще.

Друго интересно нещо е наличието на глобално хранorще на Maven за всички библиотеки, но за това ще говорим малко по-късно.

1.3 Изтеглете и инсталирайте Maven

Maven има официален сайт maven.apache.org . Има много documentация по проекта, така че ако имате затруднения or допълнителни въпроси - заповядайте, не се срамувайте.

Също така на pageта за изтегляне ( https://maven.apache.org/download.cgi ) можете да изтеглите архива на maven (apache-maven-3.8.5-bin.zip). Разопакованият архив ще отнеме някъде около 10 MB, въпреки че локалното хранorще на maven в крайна сметка ще изисква няколкостотин мегаbyteа памет.

Maven е написан на Java и изисква JRE поне version 7, Howто и дефинирани променливи на средата JAVA_HOME.

Просто създайте папка за Maven на вашия компютър, например d:\devtools и извлечете архива с Maven в нея. В резултат на това трябва да получите папка като d:\devtools\maven\bin , където ще бъдат разположени основните двоични файлове на проекта.

1.4 Променливи на средата

След това трябва да добавите пътя към папката bin от разопакования архив към променливата на средата PATH.

За да зададете променливата на средата в Windows 10, трябва да отидете в Контролен панел - Система - Разширени системни настройки. След това щракнете върху „Променливи на средата“, намерете PATH и изберете „Редактиране“, след което добавете пътя d:\devtools\maven\bin в края на реда. Обърнете внимание, пътят трябва да води точно до папката bin.

В Unix-базирана ОС, променливата на средата може да се добави с конзолна команда:

export PATH=/opt/apache-maven-3.8.5/bin:$PATH

Ако сте направor всичко правилно, тогава в конзолата трябва да въведете командата: "mvn -v". В отговор ще видите нещо като:

C:\Users\Zapp>mvn -v
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 15:51:28+0200)
Maven home: T:\apache-maven-3.0.5\bin\..
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_65\jre
Default locale: en_US, platform encoding: Cp1251
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"

1.5 Локално хранorще на Maven

Можете също така да зададете специална папка, където Maven ще съхранява jar библиотеки, които ще използва при изграждане на проекти. Тази папка се нарича локално хранorще на maven .

Ако не е указана такава папка, Maven ще я създаде в домашната директория на текущия потребител. Моята директория е: C:\Users\Zapp\.m2

Папката има доста специфично име „.m2“. Въпреки че не плаши потребителите на Linux - там това е доста често срещан подход за именуване на различни "хранorща" и / or всяко друго съхранение на служебна информация.

важно! Не поставяйте Maven в системни папки, тъй като ще се нуждае от разрешения за запис в тези папки по време на работа, което може да представлява нездравословен интерес за антивирусната or операционната система.

Maven преди version 3.5 изискваше променлива на средата, наречена M2_HOME, но това вече не е необходимо.

Можете да прочетете повече за конфигурирането на Maven на връзката: https://maven.apache.org/configure.html