Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/nvasilev/public_html/tech/wp-content/themes/suffusion/functions/media.php on line 666

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/nvasilev/public_html/tech/wp-content/themes/suffusion/functions/media.php on line 671

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/nvasilev/public_html/tech/wp-content/themes/suffusion/functions/media.php on line 684

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/nvasilev/public_html/tech/wp-content/themes/suffusion/functions/media.php on line 689

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/nvasilev/public_html/tech/wp-content/themes/suffusion/functions/media.php on line 694

Warning: Cannot modify header information - headers already sent by (output started at /home/nvasilev/public_html/tech/wp-content/themes/suffusion/functions/media.php:666) in /home/nvasilev/public_html/tech/wp-content/plugins/disable-xml-rpc-pingback/disable-xml-rpc-pingback.php on line 51
Промяна на местоположението на Maven-хранилището на локалния компютър – Nikolay´s Technical Blog
авг 202011
 

Рано или късно, след една, две или няколко преинсталации на операционната система, всеки от нас достига до извода, че трябва да инсталира потребителските програми на дял/твърд диск, различен от системния. Да, но повечето програми, при инсталиране имат предефинирани настройки, които обикновено (поне в случая с Windows) очакват, че инсталацията на сътоветната програма е на системния дял. Подобен е случая и с Eclipse и Maven.

Промяна на Maven хранилището на локалния компютър

Дори Maven да е инсталиран на  дял различен от системния, по подразбиране Maven хранилището  на локалния компютър се очаква, че ще бъде по подразбиране точно на системния дял:

  • за Windows (Vista/7) то е в  C:\Users\<WINDOWS_USERNAME>\.m2\repository
  • за  Linux в ~/.m2/repository

Ако искаме да променим местоположението на локалното хранилище, да бъде на дял различен от системния например, единственото, което е нужно да направим е да променим конфигурационния файл на Maven – settings.xml, намиращ се в инсталационната директория на Maven. За целта, разкоментираме тагът localRepository и добавяме пътя до новата директория, която ще бъде използвана за хранилище:

<settings>
...
<localrepository>/path/to/local/repo/</localrepository>
...
</settings>

В моя случай, промяната изглежда по следния начин:

<settings>
...
<localrepository>D:/config/maven/.m2/repository</localrepository>
...
</settings>

Eclipse и новото хранилище

По подразбиране Eclipse използва собствена инстанция на Maven. За локално хранилище, по подразбиране, използва следните папки:

  • за Windows (Vista/7) в  C:\Users\<WINDOWS_USERNAME>\.m2\repository
  • за  Linux в ~/.m2/repository

Ако инсталираме Maven на място различно от това по подразбиране и конфигурираме локалното хранилище да бъде на място различно от това, което се очаква по принцип, инсталирането на генерираните от Maven архиви (jar,war, и т.н.) в локалното хранилище, ще се записват на новоуказаното място.

Ако не отразим тези промени и в Eclipse, той ще използва собствената инстанция на Maven и собствени настройки за локално Maven хранилище. Съответно, ако Eclipse не намери папката .m2/repository в директорията на текущия потребител (user.home) на системния дял/диск, той я създава и инсталира генерираните архиви от Maven проектите там. Така, компилирането и инсталирането (в термините на Maven) на едни и същи проекти от командния ред и от Eclipse, ще доведе до съхраняването на архивите съответно на две различни места.

Нещо повече, не винаги версията на Maven, която Eclipse използва (M3 за Eclipse 3.6.1 например), съвпада с тази, която използваме в текущия проект (M2 за проекта, по който работя в момента). Както знаем, поради нововъведенията направени във връзка оптимизирането на работата на Maven във версия M3, Maven проектите, компилирани с тази версия са несъвместими с М2 и обратно.

Така можем да обобщим следните проблеми при промяна на локалното хранилище (и инсталация) на Maven, но неотразяването им в Eclipse:

  • Отново съхряняваме потребителски файлове на системния диск (тези генерирани от Eclipse);
  • Нямаме синхронизация при компилирането на проектите през команден ред или през средата за програмиране (компилиране през конзолата не води до промяна в Eclipse);
  • Възможна несъвместимост на файловете генерирани през команден ред и Eclipse в случай, че са използвани различни версии на Maven.

За да ги избегнем, трябва да направим две промени в настройките на Eclipse. Отваряме менюто Window > Preferences и променяме:

  • Указваме на Eclipse да използва новата инсталация на Maven: Maven > Installations > Add... и избираме директорията, %MAVEN_HOME%, която сочи към новата инсталация на Maven и която ще бъде използвана през командния ред.
  • Пренасочваме Eclipse да използва новото хранилище: Maven > User Settings > User Settings > Browse и избираме  местоположението от  settings.xml конфигурационния файл на Maven, което описва къде се намира в новото локално хранилище (обяснено в предходната секция).
По този начин уеднаквяваме версиите на Maven и на Maven хранилището използвани през командния ред и Eclipse.
Share Button

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)