Кіріспе

Maven – негізінен Java жобаларында қолданылатын құрастыруды автоматтандыру құралы. Maven сонымен қатар C#, Ruby, Scala және басқа тілдерде жазылған жобаларды құруға және басқаруға қолданылады. Maven жобасы Apache Software Foundation ұйымында орналасқан, бұл ұйым бұрын Jakarta жобасының бір бөлігі болған. Maven бағдарламалық құралды құрудың екі мәселесін шешеді: бағдарламалық құрал қалай құрылады және оның тәуелділіктері. Apache Ant сияқты бұрынғы құралдардан өзгешелігі, ол құрастыру процедурасы үшін стандартты талаптарды қолданады. Тек ерекше жағдайларды ғана көрсету қажет. XML файлы құрастырылып жатқан бағдарламалық жобаны, оның басқа сыртқы модульдер мен компоненттерге тәуелділігін, құрастыру ретін, каталогтарды және қажетті плагиндерді сипаттайды. Ол кодты компиляциялау және оны жинақтау сияқты нақты міндеттерді орындау үшін алдын ала анықталған мақсаттармен бірге келеді. Maven Java кітапханаларын және Maven плагиндерін Maven 2 Орталық репозиторийі сияқты бір немесе бірнеше репозиторийлерден динамикалық түрде жүктейді және оларды жергілікті кэште сақтайды. Жергілікті кэшке жүктелген артефакттарды жергілікті жобалар жасаған артефакттармен жаңартуға болады. Сондай-ақ, қоғамдық репозиторийлерді де жаңартуға болады. Maven плагиндерге негізделген архитектураны пайдаланады, бұл кез келген қолданбаны стандартты кіріс арқылы басқаруға мүмкіндік береді. Maven 2 үшін C/C++ түпнұсқалық плагиндер де қолдау көрсетіледі. Gradle және sbt сияқты балама технологиялар құрастыру құралдары ретінде XML-ге сүйенбейді, бірақ Maven ұсынған негізгі түсініктерді сақтайды. Apache Ivy құралымен бірге Maven репозиторийлерін қолдайтын тәуелділіктерді басқаруға арналған жекелеген менеджер де жасалды. Apache Maven қайта құруға болатын құрастыруларды қолдайды.

Жобаның нысандық моделі

Жобаның объектілік моделі (ЖОМ) бір жобаның барлық конфигурациясын қамтамасыз етеді. Жалпы конфигурация жобаның атын, иесін және басқа жобаларға тәуелділіктерін қамтиды. Сонымен қатар, плагиндер түрінде іске асырылатын құрастыру процесінің жеке кезеңдерін конфигурациялауға болады. Мысалы, компилятор плагинін Java 1.5 нұсқасын компиляция үшін пайдалануға конфигурациялауға немесе кейбір бірлік тесттері сәтсіз аяқталған жағдайда да жобаны жинақтауды көрсетуге болады. Ірі жобалар бірнеше модульдерге немесе кіші жобаларға бөлінуі керек, әрқайсысының өзіндік ЖОМ-ы болады. Содан кейін бір командамен барлық модульдерді құрастыруға болатын түбірлік ЖОМ жазуға болады. ЖОМ-дар басқа ЖОМ-дардан конфигурацияны мұралай алады. Барлық ЖОМ-дар әдепкі бойынша Бас ЖОМ-нан (Super POM) мұра алады. Бас ЖОМ әдепкі конфигурацияны ұсынады, мысалы, әдепкі бастапқы каталогтар, әдепкі плагиндер және т.б.

Тәуелділік

Maven-нің басты ерекшелігі – тәуелділіктерді басқару. Maven-нің тәуелділіктерді басқару механизмі бағдарламалық кітапханалар немесе модульдер сияқты жеке артефакттарды анықтайтын координаттар жүйесіне негізделген. Жоғарыда келтірілген POM мысалында JUnit координаттары жобаның тікелей тәуелділігі ретінде көрсетілген. Мысалы, Hibernate кітапханасы қажет болса, жобаның POM-ында Hibernate жобасының координаттарын көрсету жеткілікті. Maven автоматты түрде Hibernate-ге қажетті тәуелділіктерді (транзитивті тәуелділіктер деп аталады) жүктеп алады және оларды пайдаланушының жергілікті репозиторийіне сақтайды. Maven 2 Орталық репозиторийі.

Әртүрлі ашық кодты кітапханалар мен фреймворктердің координаттарын табуға арналған Орталық репозиторийдің іздеу жүйесі сияқты іздеу құралдары бар. Бір машинада жасалған жобалар жергілікті репозиторий арқылы бір-біріне тәуелді болуы мүмкін. Жергілікті репозиторий – жүктелген тәуелділіктер үшін кэш және жергілікті түрде құрастырылған артефакттарды сақтаудың орталықтандырылған орны қызметін атқаратын қарапайым қалта құрылымы. Maven mvn install командасы жобаны құрастырып, оның бинарлық файлдарын жергілікті репозиторийге орналастырады. Содан кейін басқа жобалар осы жобаны өз POM-дарында оның координаттарын көрсету арқылы пайдалана алады.