четверг, 21 ноября 2013 г.

Менеджеры репозиториев Maven

Часто приходится копировать в локальный maven репозиторий различные зависимости, которые отсутствуют в публичных репозиториях. 

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

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

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

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

На помощь приходят внутренние (internal) репозитории, управляемые менеджерами репозиториев. Наиболее популярными менеджерами репозиториев являются Archiva от Apache Foundation, Artifactory от JFrog и Nexus от Sonatype.

Внутренние репозитории используются не только как шлюз  для хранения копий артефактов из публичных репозиториев. В них также приходиться делать deploy (в терминах maven) собираемых библиотек и приложений. 

Репозитории используется также для построения конвейеров (Deployment Pipeline в терминологии методологии Continuous delivery). Хочу порекомендовать статью Deployment Pipeline на практике, которая описывает практическую реализацию Deployment Pipeline. В ней также поднята тема  использования репозиториев артефактов (maven репозиториев) для этих целей.



В данной статье мы не будем углубляться в сравнение данных менеджеров репозиториев. Сошлюсь только на статью Maven Repository Manager Feature MatrixВ ней проводится сравнение менеджеров репозиториев для хранения артефактов сборки. Сравниваются три наиболее популярных менеджера. Сравнение периодически обновляется по мере выхода новых версий.

среда, 29 сентября 2010 г.

Материалы по архитектуре ПО

Общие книги по архитектуре ПО

Проектирование архитектуры, паттерны проектирования

«Real World Java EE Patterns — Rethinking Best Practices» by Adam Bien

5 Best Design Pattern Books you must read as a Software Developer

Списки книг по архитектуре программного обеспечения можно найти по следующим ссылкам:
http://www.ewita.com/Books/SoftwareArchitectureBooks.htm

http://www.fromdev.com/2010/08/best-software-architecture-books-must.html - по этой ссылке также приведены комментарии с альтернативными списками книг

http://www.cs.wustl.edu/~schmidt/POSA/

Предметно-ориентированное проектирование (DDD): структуризация сложных программных систем

http://www.theserverside.net/discussions/thread.tss?thread_id=54320

Про книгу Seamsless object oriented software architecture" by Kim
Valden and Jean-Marc Nerson 1996


«Practical API Design. Confession of Java framework Architect» by Jaroslav Tulach. Книга от разработчика платформы Netbeans RCP

среда, 30 июня 2010 г.

Методы и средства инженерии программного обеспечения

Курс Методы и средства инженерии программного обеспечения представляет собой описание дисциплины инженерии программного обеспечения. Даются основные понятия и методы и средства данной области.