Apache Ivy

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 17:20, 23 января 2019.
Open book.svg Авторство
К. А. Пронин
Согласовано: 23.01.2019
Apache Ivy
200px
Создатели: Jayasoft
Разработчики: Apache Software Foundation
Выпущена: 2004
Постоянный выпуск: 2.5.0
Написана на: Java
Операционная система: Кросс-платформенное
Тип ПО: менеджер зависимостей
Лицензия: Apache License 2.0
Веб-сайт ant.apache.org/ivy/

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.

Процесс установки на видео:

Примечания

  1. Сайт Apache Ivy [Электронный ресурс]: Сравнение с Apache Maven. – Дата обращения: 02.12.2018. – Режим доступа: http://ant.apache.org/ivy/m2comparison.html

Источники

  1. Домашняя страница // Сайт Apache Ivy [2007 - 2018]. Дата обновления: 14.11.2016. URL: http://ant.apache.org/ivy/history/2.5.0-rc1/index.html (дата обращения: 02.12.2018)
  2. Обзор возможностей // Сайт Apache Ivy [2007 - 2018]. Дата обновления: 26.04.2017. URL: https://ant.apache.org/ivy/features.html (дата обращения: 02.12.2018)
  3. Гайды по 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)