Инсталирайте местен буркан с Maven

1. Проблемът и опциите

Maven е много гъвкав инструмент и наличните му публични хранилища са ненадминати. Винаги обаче ще има артефакт, който или не се хоства никъде , или хранилището, в което се хоства, е рисковано, от което може да зависи, тъй като може да не се появи, когато имате нужда.

Когато това се случи, има няколко възможности за избор:

  • захапете куршума и инсталирайте пълноценно решение за управление на хранилище като Nexus
  • опитайте се да качите артефакта в едно от по-реномираните публични хранилища
  • инсталирайте артефакта локално, като използвате приставка maven

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

Първоначалното качване на артефакт в публично хранилище или в Maven central също е добро решение, но обикновено дълго. В допълнение, библиотеката може изобщо да не е активирана от Maven, което прави процеса много по-труден, така че не е реалистично решение да можете да използвате артефакта СЕГА.

Това оставя третата опция - добавяне на артефакт в контрола на източника и използване на приставка maven - в този случай приставката maven-install-plugin да я инсталира локално, преди процесът на изграждане да се нуждае от нея . Това е най-лесният и надежден вариант.

2. Инсталирайте Local Jar с приставката m aven-install-plug

Нека започнем с пълната конфигурация, необходима за инсталиране на артефакта в нашето локално хранилище:

 org.apache.maven.plugins maven-install-plugin 2.5.1  org.somegroup someartifact 1.0 jar ${basedir}/dependencies/someartifact-1.0.jar true    install-jar-lib  install-file  validate   

Сега нека разделим и анализираме детайлите на тази конфигурация.

2.1. Информацията за артефакта

Информацията за артефакта се определя като част от елемент. Действителният синтаксис е много подобен на декларирането на зависимостта - groupId , artifactId и елементи на версията .

Следващата част от конфигурацията изисква дефиниране на опаковката на артефакта - това е посочено като jar .

След това трябва да предоставим местоположението на действителния файл на jar, който ще бъде инсталиран - това може да бъде абсолютен път на файла или може да бъде относителен, като се използват свойствата, налични в Maven . В този случай свойството $ {basedir} представлява корена на проекта, а именно местоположението, където съществува файлът pom.xml . Това означава, че файлът someartifact-1.0.jar трябва да бъде поставен в директория / dependencies / под корен.

И накрая, има няколко други незадължителни подробности, които също могат да бъдат конфигурирани.

2.2. Изпълнението

Изпълнението на инсталиране файл Целта е свързан с валидира фаза от стандартния Maven изграждане жизнен цикъл. Като такъв, преди да се опитате да компилирате - ще трябва да стартирате фазата на валидиране изрично:

mvn validate

След тази стъпка ще работи стандартната компилация:

mvn clean install

След като фазата на компилация изпълни, нашият someartifact-1.0.jar е правилно инсталиран в нашето локално хранилище, точно както всеки друг артефакт, който може да е бил извлечен от самия Maven central.

2.3. Генериране на POM срещу предоставяне на POM

Въпросът дали трябва да предоставим pom.xml файл за артефакта или не зависи главно от зависимостите на изпълнението на самия артефакт. Казано по-просто, ако артефактът има зависимости по време на изпълнение от други буркани, тези кутии трябва да присъстват и в пътя на класа по време на изпълнение. С прост артефакт, който не би трябвало да представлява проблем, тъй като вероятно няма да има зависимости по време на изпълнение (лист в графиката на зависимостите).

Опцията createPom в целта на инсталационния файл трябва да е достатъчна за тези видове артефакти:

true

Ако обаче артефактът е по-сложен и има нетривиални зависимости , тогава, ако тези зависимости все още не са в пътя на класа, те трябва да бъдат добавени. Един от начините да направите това е чрез ръчно дефиниране на тези нови зависимости в pom файла на проекта. По-добро решение е да предоставите персонализиран файл pom.xml заедно с инсталирания артефакт:

false ${basedir}/dependencies/someartifact-1.0.pom

Това ще позволи на Maven да разреши всички зависимости на артефакта, дефиниран в този потребителски pom.xml , без да се налага да ги дефинира ръчно в основния pom файл на проекта.

3. Заключение

Тази статия разглежда как да използвате буркан, който не се хоства никъде в рамките на проект на Maven, като го инсталирате локално с приставката maven-install-plugin .