Как стать автором
Обновить

Build Systems — Local Repository

Время на прочтение 4 мин
Количество просмотров 17K
Продолжение предыдущего поста о системах сборки — BuildSystems — Intro

Maven


Система сборки, описывающая зависимости на разных уровнях и плагины для выполнения задач.
В предыдущем посте есть ссылки на другие статьи, где описывается данная система, отличительной чертой которой является четко выраженный жизненный цикл сборки:

  • validate — проверяет корректность таинформации о проекте
  • compile — компилирует исходники, фактически это обращение к плагину «compiler»;
  • test — запуск юнит-тестов
  • package — упаковка классов в заданный формат (zip, rar, jar, war, ear и т.д.)
  • integration-test -запуск интеграционных тестов после сборки
  • verify — проверяет корректность пакета и удовлетворение требованиям качества
  • install — «установка» сборки в локальный репозиторий
  • deploy — отправка пакета на заданный сервер

Локальный репозиторий Maven

Но ни в одной из этих статей не описано, что в свою очередь, для меня было очень полезным — это настройка локального репозитория.

По умолчанию, в качестве локального репозитория используется следующая директория (OS:Windows)
%userprofile%/.m2/repository

Но со временем репозиторий всё растёт и растёт и меня этот факт, постоянно отжирающий на системном разделе место, начал разочаровывать прямо-пропорционально росту репозитория.
К тому же, если вдруг у вас (как у меня) настроено несколько пользователей, с которыми вы работаете, то два таких дублирующихся репозитория начинают расстраивать в два раза больше.

Чтобы этого не происходило, есть хорошее и элегантное решение — перенести локальный репозиторий на другой раздел и настроить всех пользователей на него.
Для этого открываем файл
%userprofile%/.m2/settings.xml

Где добавляем настройку локального репозитория
<localRepository>E:/_MAVEN_LOCAL_REPOSITORY</localRepository>

При использовании локального репозитория, размер директории ".m2" остается равным порядка 114Кб.

Использование плагинов

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

Создание проекта для Eclipse

Вызов maven-eclipse-plugin
mvn eclipse:eclipse

Создание проекта для IDEA

Вызов maven-idea-plugin
mvn idea:idea

Но когда у вас выполнение данных команд не приносит желаемого результата, следует посмотреть справку для вызываемого плагина, которую можно вызвать следующим образом:
mvn <plugin_name>:help

где будет описана конфигурация и возможные параметры для плагина, к которому вы обращаетесь.

А что касается генерации, то запросить справку по архетипам можно следующим образом:
mvn archetype:generate

Ant + Ivy


Ant — ещё одна система сборки
Ivy — менеджер зависимостей, который умеет обращаться к различным репозиториям и находить в них нужную информацию и подгружать её в локальный репозиторий (некоторый кэш, на локальной машине).

Ant, на мой взгляд, дает большую степень свободы, чем Maven (в котором, кстати, тоже можно обращаться к задачам/таскам ant'a), хотя бы потому, что вам для того, чтобы автоматизировать один из нужных этапов вашей сборки не придется для этого реализовывать собственный плагин для Maven. Другими словами Ant больше приспособлен к быстрой автоматизации тех или иных действий для сборки вашего проекта и где любой ваш шаг в сторону не будет расценен как побег и караться расстрелом.

Перечень того, что было на Хабре об этой системе (наиболее общее) (читать лучше опять же в приведенном порядке):

Локальный репозиторий Ivy

Аналогичная проблема с размещением и настройкой локального репозитория Ivy, который по умолчанию располагается в
%userprofile%/.ivy2/cache

Конфигурация системы читается из «ivysettings.xml», который можно также подключить следующим образом:
<ivy:settings file="${ivy.settings.file}" />

А вот размещение самого локального репозитория можно переопределить в секции «caches», указав атрибут «defaultCacheDir»:
<caches defaultCacheDir="${ivy.settings.cache}">
	<cache name="cache"/>
</caches>

В данном примере используется установленная заранее переменная/свойство (property) «ivy.settings.cache».
Пример ivysettings.xml
<ivysettings>
	<settings defaultResolver="repository" validate="false"/>
	<caches defaultCacheDir="${ivy.settings.cache}">
		<cache name="cache"/>
	</caches>
	<resolvers>
		<chain name="repository" changingPattern="*">
			<!-- Конфигурация структуры репозитория -->
			<filesystem name="ivy_repository_name" changingPattern="*">  
				<ivy pattern="${repository.base.dir}/[organisation]/[module]/[revision]/ivy-[revision].xml" />  
				<artifact pattern="${repository.base.dir}/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />  
				<artifact pattern="${repository.base.dir}/[organisation]/[module]/[revision]/[artifact].[ext]" />
			</filesystem>
		</chain>
	</resolvers>
</ivysettings>


Заключение


При знакомстве с системами сборки, нужно сохранять спокойствие, помнить, что это было придумано/написано/реализовано «чтобы помогать». Поэтому, если вас что-то объективно не устраивает, обязательно должен быть способ это либо перенастроить, либо свести ваше недовольство к минимуму.
Теги:
Хабы:
+3
Комментарии 8
Комментарии Комментарии 8

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн