Maven-in qurulması

All lectures for AZ purposes
Səviyyə , Dərs
Mövcuddur

1.1 Böyük proqramlar

Artıq kiçik proqramlar yazmağı öyrəndik, indi isə böyük proqramlar yazmağı öyrənəcəyik. Məlumdur ki, proqram nə qədər böyük və çətin olarsa, onun hazırlanmasına bir o qədər çox pul ödəyirlər :) Və bu mövzuya kiçik bir girişlə başlayaq...

Proqramların ölçüsü artdıqca, tərtibatçılar iki yeni vəziyyətlə qarşılaşdılar:

  • Bir proqram üzərində çoxlu insan çalışır.
  • Proqram kodunun hamısını bilən bir adam yoxdur.

Tez-tez belə vəziyyətlər yaranırdı ki, proqramçı proqramın bir yerindəki səhvi düzəldirdi və eyni anda başqa bir yeri pozurdu. Release documentation-da hətta belə bir zarafat ortaya çıxdı:

Dəyişiklik siyahısı:

  • Köhnə bug-ləri düzəltdik :)
  • Yeni bug-lər əlavə etdik :(

Bu problemləri həll etmək üçün o zaman iki yanaşma tapıldı: texniki və menecment yanaşması.

Texniki yanaşma proqramların hissələrə bölünməsindən ibarət idi: kitabxanalar və modullar. Hər bir belə modul kiçik bir kərpic kimi idi, onlardan böyük layihələr qurulurdu. Kitabxanalar isə – fərqli proqramlarda istifadə edilə bilən universal komponentlər idi.

Menecment yanaşması isə daha maraqlı idi – bir layihə/kitabxana ilə işləyə biləcək insanların sayını məhdudlaşdırırdı. Təsadüfi olaraq belə bir qayda ortaya çıxdı: komandanın ölçüsü "iki pizza ilə dolacaq qədər" olmalıdır. Bu adətən o deməkdir ki, əgər bir layihə üzərində 8 nəfərdən çox insan çalışırsa, onu iki layihəyə bölmək lazımdır.

Java proqramçıları arasında hər şey üçün kitabxanalar yazmaq və onları ümumi istifadəyə təqdim etmək populyarlaşdı. Beləliklə, Java proqramçıları yenidən eyni kodu yazmaq əvəzinə (tez-tez xam və səhvlərlə dolu kod), hazır və yoxlanılmış həllərdən istifadə edə bilərdilər.

Bu, əlavə stimullaşdırıcı oldu ki, Java dili server həlləri yazılması üçün populyarlaşdı (backend-də işləyirdi). Birincisi, server proqram təminatı daha yüksək etibarlılıq tələblərinə malikdir, və vaxtla yoxlanılmış kitabxanaları istifadə etmək, öz kodunu yazmaqdan daha yaxşıdır.

İkincisi, serverlərdə kod ölçüsünə demək olar ki, heç bir məhdudiyyət yoxdur. Mobil tətbiq tərtibatçısı onu 10 meqabayta sığdırmağa çalışır, desktop tətbiqi tərtibatçısı – 100 meqabayta. Lakin Java backend tərtibatçısı layihəyə bir neçə onlarla gigabaytlıq kitabxana əlavə edə bilər və heç kim ona bir söz deməz :)

Bu, zarafat deyil. Çox asanlıqla bir neçə on moduldan və bir neçə yüz kitabxanadan ibarət backend layihəsi ilə qarşılaşa bilərsiniz. Belə böyük layihələrin senarilərini təsvir etmək (və dəyişdirmək!) inanılmaz dərəcədə çətin oldu.

Və burada Maven ortaya çıxdı.

1.2 Maven ilə tanışlıq

Maven – bu, layihələrin yığılmasını idarə edən xüsusi bir “framework”-dür. O, 3 məsələni standartlaşdırır:
  • Layihənin təsviri;
  • Layihələrin yığılma ssenariləri;
  • Kitabxanalar arasındakı asılılıqlar.

Maven'in sələfi Ant, varisi isə Gradle idi. Amma məhz Maven bu üç standartı inkişaf etdirdi və mükəmməlliyə çatdırdı, həmçinin onların qarşılıqlı əlaqəsini tənzimlədi. Məhz o, Java cəmiyyətini yeni səviyyəyə çıxardı. Gəl, onu daha ətraflı nəzərdən keçirək.

Maven’in

Texniki olaraq Maven – layihələrin yığılma prosesini idarə etmək üçün xüsusi bir proqram/xidmət-dir. Onu sadəcə arxiv formatında yükləyib istənilən qovluğa çıxarmaq olar. Bunun üçün xüsusi bir quraşdırıcıya ehtiyac yoxdur.

Onun qrafik interfeysi yoxdur – bütün komandalar konsol vasitəsilə ona verilir. Onunla daha rahat işləmək üçün öz əməliyyat sisteminizdə xüsusi ətraf mühit dəyişənlərini (environment variables) təyin etmək tövsiyə olunur.

Bundan əlavə, Maven-in xüsusi bir anbarı (qovluq/direktoriyası) var ki, burada o, layihələrin yığılmasında istifadə edilən kitabxanaları saxlayır. Diskdə hər hansı bir qovluğu seçib onu anbar kimi təyin etməlisiniz.

Həmçinin, maraqlı məqamlardan biri də bütün kitabxanalar üçün mövcud olan qlobal Maven anbarının olmasıdır, lakin bu barədə bir az sonra danışacağıq.

1.3 Maven'in yüklənməsi və quraşdırılması

Maven'in rəsmi veb səhifəsi var maven.apache.org. Orada layihə haqqında çoxlu sənədlər var, buna görə çətinliklər və ya əlavə suallar yaranarsa – ora gir, çəkinmə.

Bundan əlavə, downloads səhifəsində (https://maven.apache.org/download.cgi) maven arxivi (apache-maven-3.8.5-bin.zip) yükləyə bilərsən. Açılmış arxiv təxminən 10 MB yer tutacaq, amma yerli maven deposu üçün zamanla bir neçə yüz MB yaddaş lazım olacaq.

Maven Java-da yazılıb və ən azı 7 versiyalı JRE tələb edir, həmçinin JAVA_HOME kimi ətraf dəyişənləri müəyyən edilməlidir.

Kompüterində Maven üçün bir qovluq yarat, məsələn, d:\devtools, və həmin qovluqda Maven arxivini aç. Nəticədə belə bir qovluğun olmalıdır d:\devtools\maven\bin, burada layihənin əsas ikili faylları yerləşəcək.

1.4 Ətraf dəyişənləri

Bundan sonra arxivdən çıxarılan bin qovluğunun yolunu PATH ətraf dəyişəninə əlavə etmək lazımdır.

Windows 10-da ətraf dəyişəni (environment variable) təyin etmək üçün Nəzarət Paneli — Sistem — Sistem parametrləri bölməsinə keçmək lazımdır. Daha sonra “Ətraf dəyişənləri” düyməsinə basaraq, PATH tapıb “Dəyişdir” seçmək və sonra isə d:\devtools\maven\bin yolunu sətirin sonuna əlavə etmək lazımdır. Diqqət et, yol dəqiq olaraq bin qovluğunu göstərməlidir.

Unix əsaslı OS-lərdə ətraf dəyişəni konsol komandası ilə əlavə etmək olar:


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

Əgər hər şeyi düzgün edibsənsə, konsolda bu komandadan istifadə et: «mvn -v». Əvəzində aşağıdakı kimi bir nəticə görəcəksən:


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 Lokal Maven Deposu

Maven istifadə edərək layihələri yığarkən istifadə olunacaq jar kitabxanalarını saxlayacaq xüsusi bir qovluğu təyin edə bilərsən. Belə bir qovluq – lokal maven deposu adlanır.

Əgər belə bir qovluq təyin olunmayıbsa, Maven onu cari istifadəçinin ev direktoryasında yaradacaq. Məndə bu direktoriyanı belə göstərir: C:\Users\Zapp\.m2

Bu qovluq “.m2” kimi spesifik bir ada malikdir. Lakin Linux istifadəçiləri üçün bu qorxulu deyil – çünki orada müxtəlif "depoları" və/və ya hər hansı digər xidməti məlumat saxlama sistemlərini adlandırmaq üçün bu üsul geniş yayılmışdır.

Vacibdir! Maven-i sistem qovluqlarında yerləşdirmə, çünki işləmə zamanı bu qovluqlarda yazma hüququna ehtiyac olacaq və bu da antivirus və ya əməliyyat sisteminin marağını oyada bilər.

3.5 versiyasına qədər Maven M2_HOME adlı mühit dəyişəninin təyin olunmasını tələb edirdi, amma indi buna ehtiyac yoxdur.

Maven-in konfiqurasiyası haqqında daha ətraflı məlumatı bu linkdən əldə edə bilərsən: https://maven.apache.org/configure.html

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION