Apache Ivy
Последнее изменение этой страницы: 17:20, 23 января 2019.
![]() |
Авторство | |
К. А. Пронин | ||
Согласовано: 23.01.2019 |
![]() | |
Создатели: | Jayasoft |
---|---|
Разработчики: | Apache Software Foundation |
Выпущена: | 2004 |
Постоянный выпуск: | 2.5.0 |
Написана на: | Java |
Операционная система: | Кросс-платформенное |
Тип ПО: | менеджер зависимостей |
Лицензия: | Apache License 2.0 |
Веб-сайт |
ant |
Apache Ivy — менеджер зависимостей для Java проектов, с поддержкой транзитивных зависимостей. Является интегрированной в Apache Ant утилитой [Источник 1].
Содержание
Обзор
Ivy является гибким, настраиваемым инструментом для управления (записи, отслеживания, разрешения и отчетности) зависимостями Java проекта
[Источник 2].
Ivy имеет открытый исходный код и выпущен под лицензией на свободное программное обеспечение Apache Software Foundation.
Основные достоинства Ivy:
- Гибкость и конфигурируемость – Ivy по существу не зависит от процесса и не привязан к какой-либо методологии или структуре. Вместо этого он обеспечивает необходимую гибкость и настраиваемость для адаптации к широкому диапазону процессов управления зависимостями и сборки.
- Тесная интеграция с Apache Ant – Ivy доступна как автономный инструмент, однако он особенно хорошо работает с Apache Ant, предоставляя ряд мощных задач от разрешения до создания отчетов и публикации зависимостей.
- Транзитивность – возможность использовать зависимости других зависимостей. Для решения таких задач Ivy необходимо обладать метаданными о ваших программных модулях, обычно их определяют в так называемых Ivy файлах. Чтобы найти ваши метаданные и/или артефакты ваших зависимостей (обычно это .jar файлы), Ivy может быть настроена на поиск в разных репозиториях.
История
Jayasoft создали Ivy в сентябре 2004 с Ксавьером Ханином, выступающим в качестве главного архитектора и разработчика проекта. Хостинг Jayasoft Ivy переехал (версия 1.4.1) к Apache Incubator в октябре 2006. С тех пор проект претерпел несколько переименований, чтобы показать его связь с Apache Software Foundation. Ivy окончательно покинул Apache Incubator в октябре 2007. С 2009 года он функционирует как часть проекта Apache Ant.
Функции
Менеджер зависимостей Apache Ivy реализует следующий функционал:
- Управление проектными зависимостями.
- Отчеты о зависимостях. Ivy производит два основных типа отчетов: отчеты HTML и графические отчеты. HTML отчеты дают хорошее понимание того, что сделал Apache Ivy, и непосредственно зависимости проекта. Графические отчеты обеспечивают хороший обзор переходных зависимостей проекта и конфликтов.
- Ivy наиболее часто используется для разрешения зависимостей и копирует их в директории проекта. После копирования зависимостей, сборка больше не зависит от Apache Ivy. Тем не менее, существующие сборки могут быть с легкостью перенесены в Apache Ivy используя шаблон библиотеки директорий.
- Расширяемость. Если настроек по умолчанию недостаточно, вы можете расширить конфигурацию для решения вашей проблемы. Например, вы можете подключить свой собственный репозиторий, свой собственный менеджер конфликтов.
- Гибкость. Ivy идет со многими значениями настроенными по умолчанию, но большинство из них может быть изменено под ваш проект.
- XML-управляемая декларация зависимостей проекта и хранилищ JAR.
- Автоматическое извлечение определений транзитивных зависимостей и ресурсов.
- Автоматическая интеграция в общедоступных хранилищах объектов.
- Разрешение замыканий зависимостей.
- Настраиваемые определения состояний проекта, которые позволяют определить несколько наборов зависимостей.
- Издание объектов в локальный репозиторий предприятия.
Конфигурация программного модуля
Конфигурации модуля – это настройки, по которым будет осуществлена сборка и дальнейшее использование модуля. Если один и тот же модуль имеет разные зависимости, привязанные к тому, как этот модуль будет использоваться, то эти различные наборы зависимостей и называются конфигурацией.
Apache Ivy обязана быть сконфигурирована, чтобы выполнять поставленные задачи. Конфигурация задается специальным файлом, в котором содержится информация об организации, модуле, ревизии, имени артефакта и его расширении.
Некоторые модули могут использоваться по разному и эти различные пути использования могут требовать своих, конкретных артефактов для работы программы. Кроме того, модуль может требовать одни зависимости во время компиляции и сборки, и другие во время выполнения.
Конфигурация модуля определяется в Ivy файле в формате .xml, он будет использоваться, чтобы обнаружить все зависимости для дальнейшей загрузки артефактов. Понятие «загрузка» артефакта имеет различные варианты выполнения, в зависимости от расположения артефакта: артефакт может находиться на веб-сайте или в локальной файловой системе вашего компьютера. В целом, загрузкой считается передача файла из хранилища в кеш Ivy.
Пример конфигурации зависимостей
Пример конфигурационного файла, описывающего зависимости проекта от сторонних библиотек [Источник 3]:
<ivy-module version="2.0">
<info organisation="org.apache" module="hello-ivy"/>
<dependencies>
<dependency org="commons-lang" name="commons-lang" rev="2.0"/>
<dependency org="commons-cli" name="commons-cli" rev="1.0"/>
</dependencies>
</ivy-module>
Его структура довольно проста. Первый корневой элемент <ivy-module version="2.0">
указывает на версию Ivy, с которой данный файл совместим. Следующий тег <info organisation="org.apache" module="hello-ivy"/>
содержит информацию о программном модуле, для которого указаны зависимости, здесь определяются название организации разработчика и название модуля, хотя вы можете написать в данный тег что хотите. Наконец, сегмент <dependencies>
позволяет вам определить зависимости. В данной примере модулю необходимо две сторонние библиотеки: commons-lang
и commons-cli
.
Сравнение с Apache Maven
Во-первых, самое важное отличие состоит в том, что эти два продукта не являются одинаковыми инструментами. Apache Maven – это не только менеджер зависимостей, он также осуществляет управление всем проектом и его сборку, тогда как Apache Ivy - только инструмент управления зависимостями [1].
Главное преимущество Apache Ivy – гибкость конфигурации, здесь вы можете задавать настройки модулей для тестов, для исполнения, также есть возможность иметь конфигурации для MySQL и СУБД Oracle, или же hybernate и jdbc. В каждой конфигурации вы независимо можете определять необходимые вам артефакты.
Maven же определяет две области, к которым может относиться программный модуль – тестирование или сборка проекта, данные области заранее объявлены и нет возможности создавать новые.
Процесс установки
Для ОС Mac OS X необходимо установить утилиты brew. Для этого заходим в терминал и пишем следующую команду:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Далее, после установки brew запускаем команды:
brew install ant brew install ivy
Данные шаги ставят программы Apache Ant и Ivy соответственно.
После настройки .xml
файла для компиляции проекта, заходим в его папку и запускаем команду ivy.
Например, можно скачать исходные файлы и, распаковав архив, перейти в директорию src/example/(любую папку) и выполнить команду ivy.
Процесс установки на видео:
Примечания
- ↑ Сайт Apache Ivy [Электронный ресурс]: Сравнение с Apache Maven. – Дата обращения: 02.12.2018. – Режим доступа: http://ant.apache.org/ivy/m2comparison.html
Источники
- ↑ Домашняя страница // Сайт Apache Ivy [2007 - 2018]. Дата обновления: 14.11.2016. URL: http://ant.apache.org/ivy/history/2.5.0-rc1/index.html (дата обращения: 02.12.2018)
- ↑ Обзор возможностей // Сайт Apache Ivy [2007 - 2018]. Дата обновления: 26.04.2017. URL: https://ant.apache.org/ivy/features.html (дата обращения: 02.12.2018)
- ↑ Гайды по Apache Ivy // Сайт Apache Ivy [2007 - 2018]. Дата обновления: 02.10.2017. URL: http://ant.apache.org/ivy/history/2.5.0-rc1/tutorial/start.html (дата обращения: 02.12.2018)
ISSN 2542-0356
Следуй за Полисом
Оставайся в курсе последних событий
Лицензия
Если не указано иное, содержание этой страницы доступно по лицензии Creative Commons «Attribution-NonCommercial-NoDerivatives» 4.0, а примеры кода – по лицензии Apache 2.0. Подробнее см. Условия использования.