Apache IVY - Краткое руководство

Apache Ivy - очень популярный и очень мощный инструмент управления зависимостями, используемый для управления зависимостями в проектах на основе ANT таким же образом, как Apache Maven управляет зависимостями.

Apache Ivy основан на Apache ANT, следует тем же принципам проектирования, является подпроектом Apache ANT и активно управляется и поддерживается сообществом Apache ANT.

Особенности

Ниже приведены важные особенности Apache Ivy.

  • ANT Based- Apache Ivy предоставляет возможность управления зависимостями для проектов на основе ANT. Кроме того, он очень прост в использовании.

  • Dependency Reports - Apache Ivy предоставляет опции для печати графика зависимостей в формате html, а также в формате отчетов.

  • Non-intrusive- Apache Ivy не накладывает никаких ограничений на то, чтобы быть частью распространения. Даже файлы сборки не зависят от Apache Ivy.

  • Highly Flexible - Apache Ivy предоставляет множество конфигураций по умолчанию и может быть очень легко настроен в соответствии с требованиями.

  • Extendible- Apache Ivy можно легко расширить. Вы можете определить свой собственный репозиторий, средства разрешения конфликтов и последнюю стратегию.

  • Performance- Apache Ivy ориентирован на производительность. Он хранит кеш уже загруженной библиотеки. Сначала проверяет локальные репозитории для разрешения зависимостей, чем проверяет другие репозитории.

  • Transitive Dependencies - Apache Ivy автоматически управляет транзитивными зависимостями, если один проект или библиотека зависит от другой библиотеки, которой может потребоваться другая библиотека.

  • Maven Repository- Apache Ivy следует соглашениям, аналогичным соглашениям репозитория Maven. Apache Ivy может разрешать зависимости с помощью глобального репозитория maven.

  • Maven 2 POMs- Apache Ivy может читать Maven 2 POM как дескрипторы модуля, может устанавливать ivy как дескриптор модуля. Таким образом, можно легко перенести существующие проекты в управляемые проекты IVY.

  • Publishing - Apache Ivy обеспечивает поддержку публикации вашего проекта и упрощает процесс развертывания многопроектной среды.

  • Free to Use - Apache Ivy имеет открытый исходный код и может использоваться бесплатно.

  • Documentation - Apache Ivy имеет очень подробную документацию и руководства, доступные для изучения.

Единственным требованием Apache Ivy является установка Java и ANT на вашем компьютере.

Apache Ant распространяется по лицензии Apache Software License, полноценной лицензии с открытым исходным кодом, сертифицированной в рамках инициативы с открытым исходным кодом.

Последнюю версию Apache Ant, включая полный исходный код, файлы классов и документацию, можно найти по адресу http://ant.apache.org.

Установка Apache Ant

Предполагается, что вы уже загрузили и установили Java Development Kit (JDK) на свой компьютер. Если нет, следуйте инструкциям здесь .

  • Убедитесь, что для переменной среды JAVA_HOME задана папка, в которой установлен JDK.

  • Загрузите двоичные файлы из https://ant.apache.org

  • Разархивируйте zip-файл в удобное место c: \ folder. используя Winzip, winRAR, 7-zip или аналогичные инструменты.

  • Создайте новую переменную среды с именем ANT_HOME это указывает на папку установки Ant, в данном случае c:\apache-ant-1.9.14-bin папка.

  • Добавьте путь к пакетному файлу Apache Ant в переменную среды PATH. В нашем случае это будетc:\apache-ant-1.9.14-bin\bin папка.

Проверка установки Apache Ant

Чтобы проверить успешную установку Apache Ant на вашем компьютере, введите в командной строке ant.

Вы должны увидеть результат, похожий на -

C:\>ant -version
Apache Ant(TM) version 1.9.14 compiled on March 12 2019

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

Установка Apache Ivy

  • Загрузите двоичные файлы из https://ant.apache.org/ivy

  • Разархивируйте zip-файл в удобное место c: \ folder. используя Winzip, winRAR, 7-zip или аналогичные инструменты.

  • Скопируйте ivy-2.5.0.jar в c:\apache-ant-1.9.14-bin/lib папка.

Проверка установки Apache Ivy

Чтобы проверить успешную установку Apache Ivy на вашем компьютере, создайте следующий файл сборки в папке E:> ivy.

<project name="test ivy installation" 
   default="test" xmlns:ivy="antlib:org.apache.ivy.ant">
   <target name="test" description="Test ivy installation">
      <ivy:settings />
   </target>
</project>

Вы должны увидеть результат, похожий на -

C:\>ant
Buildfile: E:\ivy\build.xml
test:
BUILD SUCCESSFUL
Total time: 2 seconds

Установка Eclipse

В этом руководстве также рассматривается интеграция Ant с Eclipse IDE. Следовательно, если вы еще не установили Eclipse, загрузите и установите Eclipse.

Чтобы установить Eclipse -

  • Загрузите последние двоичные файлы Eclipse с www.eclipse.org

  • Разархивируйте двоичные файлы Eclipse в удобное место, например в c: \ folder.

  • Запустите Eclipse из c: \ eclipse \ eclipse.exe

Рассмотрим следующий пример ivy.xml, чтобы понять терминологию Ivy.

<?xml version="1.0" encoding="ISO-8859-1"?>
<ivy-module version="2.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
   <info organisation="com.tutorialspoint" module="ivy-test" status="integration">
   </info>
   <dependencies>
      <dependency org="commons-lang" name="commons-lang" rev="2.6" />
   </dependencies>
</ivy-module>

Условия плюща

Ниже приведены важные термины Эко-системы плюща.

  • Organisation- Как следует из названия, оно относится к названию компании, индивидуальному разработчику или названию команды, которая создает проект или библиотеку. Например, com.tutorialspoint.

  • Module- Как следует из названия, это относится к многоразовому блоку или модулю. К модулю обычно прикреплена версия. Например, commons-lang, ivy-test и т. Д.

  • Module Descriptor- Дескриптор модуля относится к файлу ivy.xml, который описывает модуль. Дескриптор модуля содержит идентификатор (организацию, имя, ветвь и версию), опубликованные артефакты, конфигурации и зависимости.

  • Artifact- Артефакт относится к одному файлу как к доставляемому. Например, файл jar. Артефакт может быть типа: zip, gz и т. Д. Jar, Source Jar, Javadoc Jar - это различные артефакты модуля.

  • Type - Тип определяет категорию артефакта, например jar, war, src, doc и т. Д.

  • Artifact file name extension - Расширение артефактов, например .jar,, zip, .gz и т. Д.

  • Module Revision - Уникальный номер редакции модуля или его номер версии.

  • Status of Revision- Статус ревизии указывает на стабильность ревизии. Ниже приведены важные значения статуса -

    • integration - Представляет непрерывное развитие, ночную сборку и т. Д.

    • milestone - представляет собой дистрибутив, но не доработанный.

    • release - Представляет протестированную и завершенную, мажорную версию.

  • Repository - Подобно репозиториям Maven, репозиторий представляет собой сайт распространения, где ivy может искать библиотеку, артефакты, модули и т. Д. Репозиторий может быть публичным, частным или общим.

  • Ivy Settings- Apache Ivy следует принципам Maven и поставляется с множеством конфигураций по умолчанию. Настройки по умолчанию можно изменить, определив файл ivysettings.xml.

Apache Ivy следует принципам Maven и поставляется с множеством конфигураций по умолчанию. Настройки по умолчанию можно изменить, определив файл ivysettings.xml.

<ivysettings>
	<properties file="${ivy.settings.dir}/ivysettings-file.properties" /> <settings defaultCache="${cache.dir}" defaultResolver="ibiblio" checkUpToDate="false" />
	<resolvers>
		<ibiblio name="ibiblio" />
		<filesystem name="internal">
			<ivy pattern="${repository.dir}/[module]/ivy-[revision].xml" /> <artifact pattern="${repository.dir}/[module]/[artifact]-[revision].[ext]" />
		</filesystem>
	</resolvers>
	<modules>
		<module organisation="tutorialspoint" name=".*" resolver="internal" />
	</modules>
</ivysettings>

Теги файла настроек Ivy

Ниже приведены важные теги файла настроек Ivy.

  • property- Установить переменную плюща. Мощность: 0..n

  • properties- Чтобы установить переменные плюща, используя файл свойств. Мощность: 0..n

  • settings- Чтобы настроить плющ со значениями по умолчанию. Мощность: 0..1

  • include- Включить другой файл настроек. Мощность: 0..n

  • classpath- Чтобы добавить в путь к классам место, используемое для загрузки плагинов. Мощность: 0..n

  • typedef- Определить новые типы плюща. Мощность: 0..n

  • lock-strategies- Чтобы определить стратегии блокировки. Мощность: 0..1

  • caches- Для определения менеджеров кеша репозитория. Мощность: 0..1

  • latest-strategies- Для определения последних стратегий. Мощность: 0..1

  • parsers- Определить парсеры дескриптора модуля. Мощность: 0..1

  • version-matchers- Определить сопоставители новой версии. Мощность: 0..1

  • triggers- Зарегистрировать триггеры на событиях плюща. Мощность: 0..1

  • namespaces- Для определения новых пространств имен. Мощность: 0..1

  • macrodef- Чтобы определить новый преобразователь макросов. Мощность: 0..n

  • resolvers- Чтобы определить преобразователи зависимостей. Мощность: 0..1

  • conflict-managers- Определить менеджеров по конфликтам. Мощность: 0..1

  • modules- Для определения правил между модулями и преобразователями зависимостей. Мощность: 0..1

  • outputters- Определить список доступных средств вывода отчетов. Мощность: 0..1

  • statuses- Определить список доступных статусов. Мощность: 0..1

IvyDE - это плагин Eclipse, предоставляемый Apache. Чтобы установить IvyDE, запустите Eclipse и перейдите в раздел «Справка»> «Установить новое программное обеспечение». Он отображает окно "Доступные программы". Войдите на сайт обновлений IvyDE http://www.apache.org/dist/ant/ivyde/updatesite/и нажмите клавишу ввода. Он отображает следующие плагины.

Щелкните Далее, и вы увидите следующий экран.

Если вы столкнулись с какой-либо ошибкой при установке плагина, просто перезапустите процесс. После успешной установки вы увидите плагин в eclipe.

Теперь вы можете управлять зависимостями с помощью Eclipse и Ivy.

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

Давайте сначала создадим java-файл Tester.java в E: > ivy > src > com > tutorialspoint папка, которая будет действовать как исходная папка для проекта ant.

Application.java

package com.tutorialspoint;
import org.apache.commons.lang.StringUtils;
public class Application {
   public static void main(String[] args) {
      String string = StringUtils.upperCase("Ivy Beginner Guide");
      System.out.println(string);
   }
}

Вышеупомянутый класс использует библиотеку apache commons lang для использования своего класса StringUtils. Ivy должен загрузить эту библиотеку, и поэтому она должна быть определена в разделе зависимостей в ivy.xml. Ниже приведен ivy.xml, созданный в E: > ivy папка.

ivy.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
   <info
      organisation="com.tutorialspoint"
      module="test"
      status="integration">
   </info>
   <dependencies>
      <dependency org="org.apache.commons" name="commons-lang3" rev="3.9"/>
   </dependencies>
</ivy-module>

Ниже приведены важные термины.

  • ivy-module - Корневой элемент для определения версии ivy, пространства имен и т. Д.

  • info - элемент, идентифицирующий проект как уникальную сущность.

    • organisation - название организации

    • module - название модуля

    • status - статус, например выпуск, интеграция или веха.

  • dependencies - элемент, содержащий зависимости проекта в виде тегов зависимостей, который имеет следующие атрибуты.

    • org - название организации зависимости

    • name - имя зависимости.

    • rev - версия зависимости.

build.xml

<project name="test" default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">
   <target name="resolve" description="resolve dependencies">
      <ivy:resolve />
   </target>
</project<

Ниже приведены важные термины.

  • project - Корневой элемент для определения имени проекта, пространства имен задач по умолчанию для ivy и т. Д.

  • target- целевой элемент для создания новой задачи и ее описание. Это содержит задачу разрешения плюща. Когда ant строит проект, он запускает задачу разрешения ivy, которая затем разрешает зависимости с помощью ivy.

Сборка проекта

Поскольку у нас все файлы готовы. Просто зайдите в консоль. Перейдите кE: > ivy папку и запустите команду ant.

E:\ivy > ant

Ivy вступит в действие, разрешив зависимости, вы увидите следующий результат.

Buildfile: E:\ivy\build.xml
resolve:
[ivy:resolve] :: Apache Ivy 2.5.0 - 20191020104435 :: https://ant.apache.org/ivy
/ ::
[ivy:resolve] :: loading settings :: url = jar:file:/E:/Apache/apache-ant-1.9.14
/lib/ivy-2.5.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
[ivy:resolve] :: resolving dependencies :: com.tutorialspoint#test;working@Acer-
PC
[ivy:resolve]   confs: [default]
[ivy:resolve]   found commons-lang#commons-lang;2.6 in public
[ivy:resolve]   found junit#junit;3.8.1 in public
[ivy:resolve] :: resolution report :: resolve 375ms :: artifacts dl 79ms
      ---------------------------------------------------------------------
      |                  |            modules            ||   artifacts   |
      |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
      ---------------------------------------------------------------------
      |      default     |   2   |   2   |   0   |   0   ||   4   |   0   |
      ---------------------------------------------------------------------
[ivy:retrieve] :: retrieving :: com.tutorialspoint#test [sync]
[ivy:retrieve]  confs: [default]
[ivy:retrieve]  0 artifacts copied, 2 already retrieved (0kB/101ms)
BUILD SUCCESSFUL
Total time: 1 second
E:\ivy>

Разрешить вывод

Ниже приведены важные термины.

  • conf - конфигурация, в нашем случае мы используем конфигурацию по умолчанию.

  • modules - указывает общее количество модулей, загруженных модулей и т. Д.

  • artifacts - указывает общее количество артефактов, загруженных артефактов и т. Д.

Вы можете проверить загруженные файлы в расположении по умолчанию кэша ivy в ${ivy.default.ivy.user.dir} > .ivy2 > cacheпапка. А $ {ivy.default.ivy.user.dir} по умолчанию является домашней страницей пользователя: $ HOME.

Задача установки используется для установки модуля и его зависимостей в резолвере. Он используется, когда публичный артефакт должен быть загружен и использован в частном репозитории. По умолчанию локальным репозиторием пользователя является его / ее частный репозиторий, который находится в $ {ivy.default.ivy.user.dir} / local.

Давайте создадим Tester.java, build.xml и ivy.xml, как описано в главе IVY - Resolve Task .

Обновите build.xml, чтобы использовать задачу установки ivy.

build.xml

<project name="test" default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">
   <target name="resolve" description="resolve dependencies">
      <ivy:resolve />
   </target>
   <target name="install" description="install dependencies">
      <ivy:install organisation="commons-lang" module="commons-lang" 
         revision="2.6" transitive="true" overwrite="false" 
         from="public" to="local" />
   </target>
</project>

Ниже приведены важные термины.

  • organisation - название организации.

  • module - название модуля проекта.

  • revision - версия проекта.

  • from - из репозитория.

  • to - типу репозитория.

Сборка проекта

Поскольку у нас все файлы готовы. Просто зайдите в консоль. Перейдите кE: > ivy папку и запустите команду ant.

E:\ivy > ant install

Ivy вступит в действие, разрешив зависимости, вы увидите следующий результат.

E:\ivy > ant install
Buildfile: E:\ivy\build.xml
install:
[ivy:install] :: Apache Ivy 2.5.0 - 20191020104435 :: https://ant.apache.org/ivy
/ ::
[ivy:install] :: loading settings :: url = jar:file:/E:/Apache/apache-ant-1.9.14
/lib/ivy-2.5.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
[ivy:install] :: installing commons-lang#commons-lang;2.6 ::
[ivy:install] :: resolving dependencies ::
[ivy:install]   found commons-lang#commons-lang;2.6 in public
[ivy:install]   found junit#junit;3.8.1 in public
[ivy:install] :: downloading artifacts to cache ::
[ivy:install] :: installing in local ::
[ivy:install]   published commons-lang to C:\Users\Acer\.ivy2\local\commons-lang
\commons-lang\2.6.part\sources\commons-lang.jar
[ivy:install]   published commons-lang to C:\Users\Acer\.ivy2\local\commons-lang
\commons-lang\2.6.part\jars\commons-lang.jar
[ivy:install]   published commons-lang to C:\Users\Acer\.ivy2\local\commons-lang
\commons-lang\2.6.part\javadocs\commons-lang.jar
[ivy:install]   published ivy to C:\Users\Acer\.ivy2\local\commons-lang\commons-
lang\2.6.part\ivys\ivy.xml
[ivy:install]   publish committed: moved C:\Users\Acer\.ivy2\local\commons-lang\
commons-lang\2.6.part
[ivy:install]           to C:\Users\Acer\.ivy2\local\commons-lang\commons-lang\2
.6
[ivy:install]   published junit to C:\Users\Acer\.ivy2\local\junit\junit\3.8.1.p
art\jars\junit.jar
[ivy:install]   published ivy to C:\Users\Acer\.ivy2\local\junit\junit\3.8.1.par
t\ivys\ivy.xml
[ivy:install]   publish committed: moved C:\Users\Acer\.ivy2\local\junit\junit\3
.8.1.part
[ivy:install]           to C:\Users\Acer\.ivy2\local\junit\junit\3.8.1
[ivy:install] :: install resolution report ::
[ivy:install] :: resolution report :: resolve 0ms :: artifacts dl 21ms
      ---------------------------------------------------------------------
      |                  |            modules            ||   artifacts   |
      |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
      ---------------------------------------------------------------------
      |      default     |   2   |   0   |   0   |   0   ||   4   |   0   |
      ---------------------------------------------------------------------
BUILD SUCCESSFUL
Total time: 43 seconds

Вы можете проверить загруженные файлы в локальном репозитории ivy cache по умолчанию. ${ivy.default.ivy.user.dir} > .ivy2 > local каталог.

задача получения используется для разрешения зависимостей в указанном месте в рабочей области проекта.

Давайте создадим Tester.java, build.xml и ivy.xml, как описано в главе IVY - Resolve Task .

Обновите build.xml, чтобы использовать задачу получения плюща.

build.xml

<project name="test" default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">
   <target name="resolve" description="resolve dependencies">
      <ivy:resolve />
      <ivy:retrieve sync="true" type="jar" />
   </target>
</project>

Ниже приведены важные термины.

  • sync - sync true гарантирует, что каталог lib обновлен, а любой лишний файл будет удален.

  • type- type указывает плющу копировать только указанный тип артефактов, например jar. Источник jar, javadoc jar будет проигнорирован. Тип для исходного файла jar - src или source и doc или bundle для javadoc jar.

Получить задачи копирует разрешенные зависимости в каталог lib проекта по умолчанию и может быть изменен с помощью атрибута pattern.

Сборка проекта

Поскольку у нас все файлы готовы. Просто зайдите в консоль. Перейдите кE: > ivy папку и запустите команду ant.

E:\ivy > ant

Ivy вступит в действие, разрешив зависимости, вы увидите следующий результат.

Buildfile: E:\ivy\build.xml
resolve:
[ivy:resolve] :: Apache Ivy 2.5.0 - 20191020104435 :: https://ant.apache.org/ivy
/ ::
[ivy:resolve] :: loading settings :: url = jar:file:/E:/Apache/apache-ant-1.9.14
/lib/ivy-2.5.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
[ivy:resolve] :: resolving dependencies :: com.tutorialspoint#test;working@Acer-
PC
[ivy:resolve]   confs: [default]
[ivy:resolve]   found commons-lang#commons-lang;2.6 in public
[ivy:resolve]   found junit#junit;3.8.1 in public
[ivy:resolve] :: resolution report :: resolve 316ms :: artifacts dl 18ms
      ---------------------------------------------------------------------
      |                  |            modules            ||   artifacts   |
      |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
      ---------------------------------------------------------------------
      |      default     |   2   |   2   |   0   |   0   ||   4   |   0   |
      ---------------------------------------------------------------------
[ivy:retrieve] :: retrieving :: com.tutorialspoint#test [sync]
[ivy:retrieve]  confs: [default]
[ivy:retrieve]  0 artifacts copied, 2 already retrieved (0kB/2756ms)
BUILD SUCCESSFUL
Total time: 31 seconds

Вы можете проверить загруженные файлы в каталоге lib проекта.

Задача cachepath используется для создания пути к классам ANT с разрешенными артефактами, присутствующими в кэше. Поскольку ANT требует, чтобы jar-файлы были путем к классам для компиляции файлов java, Ivy cachepath создает путь к классам.

Давайте создадим Tester.java, build.xml и ivy.xml, как описано в главе IVY - Resolve Task .

Обновите build.xml, чтобы использовать задачу получения плюща.

build.xml

<project name="test" default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">
   <target name="resolve" description="resolve dependencies">
      <ivy:resolve />
      <ivy:cachepath pathid="new.classpath" />
   </target>
   <target name="compile" depends="resolve" description="Compile">
      <mkdir dir="build/classes" />
      <javac srcdir="src" destdir="build/classes">
         <classpath refid="new.classpath" />
      </javac>
   </target>
</project>

Ниже приведены важные термины.

  • pathid - идентификатор пути к классам, в котором присутствуют кешированные jar-файлы.

Получить задачи копирует разрешенные зависимости в каталог lib проекта по умолчанию и может быть изменен с помощью атрибута pattern.

Сборка проекта

Поскольку у нас все файлы готовы. Просто зайдите в консоль. Перейдите кE: > ivy папку и запустите команду ant.

E:\ivy > ant compile

Ivy вступит в действие, разрешив зависимости, вы увидите следующий результат.

Buildfile: E:\ivy\build.xml
resolve:
[ivy:resolve] :: Apache Ivy 2.5.0 - 20191020104435 :: https://ant.apache.org/ivy
/ ::
[ivy:resolve] :: loading settings :: url = jar:file:/E:/Apache/apache-ant-1.9.14
/lib/ivy-2.5.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
[ivy:resolve] :: resolving dependencies :: com.tutorialspoint#test;working@Acer-
PC
[ivy:resolve]   confs: [default]
[ivy:resolve]   found commons-lang#commons-lang;2.6 in public
[ivy:resolve]   found junit#junit;3.8.1 in public
[ivy:resolve] :: resolution report :: resolve 2314ms :: artifacts dl 15ms
      ---------------------------------------------------------------------
      |                  |            modules            ||   artifacts   |
      |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
      ---------------------------------------------------------------------
      |      default     |   2   |   2   |   0   |   0   ||   4   |   0   |
      ---------------------------------------------------------------------
compile:
   [javac] E:\ivy\build.xml:13: warning: 'includeantruntime' was not set, defau
lting to build.sysclasspath=last; set to false for repeatable builds
   [javac] Compiling 1 source file to E:\ivy\build\classes
BUILD SUCCESSFUL
Total time: 3 seconds

Вы можете проверить скомпилированный файл класса в каталоге сборки проекта.

Задача публикации используется для публикации текущих артефактов и файлов их разрешенных дескрипторов в указанном репозитории.

Давайте создадим Tester.java, build.xml и ivy.xml, как описано в главе IVY - Resolve Task .

Обновите build.xml, чтобы использовать задачу публикации ivy. Сначала мы создадим файл jar, а затем опубликуем его.

build.xml

<project name="test" default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">
   <property name = "build.dir" value = "build"/>
   <target name="resolve" description="resolve dependencies">
      <ivy:resolve />
   </target>
   <target name = "jar">
      <jar destfile = "${build.dir}/lib/application.jar"
         basedir = "${build.dir}/classes"> <manifest> <attribute name = "Main-Class" value = "com.tutorialspoint.Application"/> </manifest> </jar> </target> <target name="publish" depends="jar"> <ivy:resolve /> <ivy:publish resolver="local" pubrevision="1.0" overwrite="true"> <artifacts pattern="${build.dir}/lib/[artifact].[ext]" />
      </ivy:publish>   
   </target>
</project>

Ниже приведены важные термины.

  • resolver - преобразователь, который будет использоваться для публикации.

  • pattern - шаблон для поиска артефакта.

Здесь задача публикации сначала создает банку, затем разрешает зависимости, устанавливает информацию и затем публикует артефакт в локальном репозитории.

Сборка проекта

Поскольку у нас все файлы готовы. Просто зайдите в консоль. Перейдите кE: > ivy папку и запустите команду ant.

E:\ivy > ant publish

Ivy вступит в действие, разрешив зависимости, вы увидите следующий результат.

E:\ivy > ant publish
Buildfile: E:\ivy\build.xml
jar:
publish:
[ivy:resolve] :: Apache Ivy 2.5.0 - 20191020104435 :: https://ant.apache.org/ivy
/ ::
[ivy:resolve] :: loading settings :: url = jar:file:/E:/Apache/apache-ant-1.9.14
/lib/ivy-2.5.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
[ivy:resolve] :: resolving dependencies :: com.tutorialspoint#test;1.0.0
[ivy:resolve]   confs: [default]
[ivy:resolve]   found commons-lang#commons-lang;2.6 in public
[ivy:resolve]   found junit#junit;3.8.1 in public
[ivy:resolve] :: resolution report :: resolve 121ms :: artifacts dl 15ms
      ---------------------------------------------------------------------
      |                  |            modules            ||   artifacts   |
      |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
      ---------------------------------------------------------------------
      |      default     |   2   |   2   |   0   |   0   ||   4   |   0   |
      ---------------------------------------------------------------------
[ivy:publish] :: publishing :: com.tutorialspoint#test
[ivy:publish]   published application to C:\Users\Acer\.ivy2\local\com.tutorials
point\test\1.0\jars\application.jar
[ivy:publish]   published ivy to C:\Users\Acer\.ivy2\local\com.tutorialspoint\te
st\1.0\ivys\ivy.xml
BUILD SUCCESSFUL
Total time: 1 second

Вы можете проверить опубликованные артефакты плюща в локальном репозитории.

info task используется для установки конкретной информации ivy в файле и может использоваться без какого-либо разрешения зависимостей.

Давайте создадим Tester.java, build.xml и ivy.xml, как описано в главе IVY - Resolve Task .

Обновите build.xml, чтобы использовать задачу публикации ivy. Сначала мы создадим файл jar, а затем опубликуем его. Перед публикацией задачи мы установили необходимую информацию о плюще с помощью информационной задачи.

build.xml

<project name="test" default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">
   <property name = "build.dir" value = "build"/>
   <target name="resolve" description="resolve dependencies">
      <ivy:resolve />
   </target>
   <target name = "jar">
      <jar destfile = "${build.dir}/lib/application.jar" basedir = "${build.dir}/classes">      
         <manifest>
            <attribute name = "Main-Class" value = "com.tutorialspoint.Application"/>
         </manifest>
      </jar>
   </target>
   <target name="publish" depends="jar">
      <ivy:info file="ivy.xml" />
      <ivy:publish resolver="local" pubrevision="1.0" overwrite="true">
         <artifacts pattern="${build.dir}/lib/[artifact].[ext]" />
      </ivy:publish>   
   </target>
</project>

Здесь задача публикации: сначала создайте банку, затем установите информацию с помощью задачи ivy: info, а затем опубликуйте артефакт в локальном репозитории.

Сборка проекта

Поскольку у нас все файлы готовы. Просто зайдите в консоль. Перейдите кE: > ivy папку и запустите команду ant.

E:\ivy > ant publish

Ivy вступит в действие, разрешив зависимости, вы увидите следующий результат.

Buildfile: E:\ivy\build.xml
jar:
publish:
 [ivy:info] :: Apache Ivy 2.5.0 - 20191020104435 :: https://ant.apache.org/ivy/
::
 [ivy:info] :: loading settings :: url = jar:file:/E:/Apache/apache-ant-1.9.14/l
ib/ivy-2.5.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
[ivy:publish] :: publishing :: com.tutorialspoint#test
[ivy:publish]   published application to C:\Users\Acer\.ivy2\local\com.tutorials
point\test\1.0\jars\application.jar
[ivy:publish]   published ivy to C:\Users\Acer\.ivy2\local\com.tutorialspoint\te
st\1.0\ivys\ivy.xml
BUILD SUCCESSFUL
Total time: 0 seconds

Если мы не поставим информационную задачу, то задача публикации не будет работать. Используйте измененный ниже файл build.xml и просмотрите ошибку при отсутствии атрибута организации и т. Д.

build.xml

<project name="test" default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">
   <property name = "build.dir" value = "build"/>
   <target name="resolve" description="resolve dependencies">
      <ivy:resolve />
   </target>
   <target name = "jar">
      <jar destfile = "${build.dir}/lib/application.jar"
         basedir = "${build.dir}/classes"> <manifest> <attribute name = "Main-Class" value = "com.tutorialspoint.Application"/> </manifest> </jar> </target> <target name="publish" depends="jar"> <ivy:publish resolver="local" pubrevision="1.0" overwrite="true"> <artifacts pattern="${build.dir}/lib/[artifact].[ext]" />
      </ivy:publish>   
   </target>
</project>

Перейдите к E: > ivy папку и запустите команду ant.

E:\ivy > ant publish

Ivy вступит в действие, разрешив зависимости, вы увидите следующий результат.

Buildfile: E:\ivy\build.xml
jar:
publish:
[ivy:publish] :: Apache Ivy 2.5.0 - 20191020104435 :: https://ant.apache.org/ivy
/ ::
[ivy:publish] :: loading settings :: url = jar:file:/E:/Apache/apache-ant-1.9.14
/lib/ivy-2.5.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
BUILD FAILED
E:\ivy\build.xml:28: no organisation provided for ivy publish task: It can eithe
r be set explicitly via the attribute 'organisation' or via 'ivy.organisation' p
roperty or a prior call to <resolve/>
Total time: 3 seconds

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

  • Composite - Резольвер, который использует другие резолверы для выполнения своих задач.

  • Standard - Решатель выполняет необходимые задачи.

Стандартные резольверы

В следующей таблице перечислены стандартные преобразователи и их использование.

Sr.No. Имя (Тип) и Описание
1

IvyRep (Standard)

Находит файлы Ivy на ivyrep и артефакты на ibiblio.
2

IBiblio (Standard)

Находит артефакты на ibiblio.
3

BinTray (Standard)

Находит артефакты на лотке для мусора.
4

Packager (Standard)

Находит файлы Ivy и инструкции по упаковке через URL-адреса, создает артефакты с помощью инструкций.
5

FileSystem (Standard)

Находит файлы и артефакты Ivy в локальной файловой системе.
6

URL (Standard)

Находит файлы и артефакты Ivy в репозиториях, к которым можно получить доступ с помощью URL-адресов.
7

MirroredURL (Standard)

Находит файлы и артефакты Ivy в репозиториях, к которым можно получить доступ с помощью URL-адресов из списка зеркал.
8

VFS (Standard)

Находит файлы и артефакты Ivy в репозиториях, к которым можно получить доступ с помощью Apache Commons VFS.
9

SSH (Standard)

Находит файлы и артефакты Ivy в репозиториях, к которым можно получить доступ с помощью SSH.
10

SFTP (Standard)

Находит файлы и артефакты Ivy в репозиториях, к которым можно получить доступ с помощью SFTP.
11

Jar (Standard)

Находит файлы и артефакты Ivy в репозиториях в банке.
12

Chain (Composite)

Делегирует поиск цепочке суб-преобразователей.
13

Dual (Composite)

Делегирует поиск одному преобразователю, а артефакты - другому.
14

OBR (Standard)

Разрешить модули как пакеты OSGi, перечисленные в OSGi obr.xml.
15

Eclipse updatesite (Standard)

Разрешить модули как пакеты OSGi, которые размещены на сайте обновлений Eclipse.
16

OSGi-agg (Composite)

Делегирует поиск цепочке суб-преобразователей, поддерживающих пакеты OSGi.

Давайте создадим Tester.java, build.xml и ivy.xml в новом проекте под E: > ivy2папка, аналогичная описанной в главе IVY - Resolve Task . Создайте папку настроек вE: > ivy2. Создайте ivysettings.xml в папке настроек.

build.xml

<project name="test" default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">
   <property name = "build.dir" value = "build"/>
   <property name = "base.dir" value = ""/>
   <target name="resolve" description="resolve dependencies">
      <ivy:resolve />
   </target>
   <target name="compile" depends="resolve" description="Compile">
      <mkdir dir="build/classes" />
      <javac srcdir="src" destdir="build/classes">
         <classpath refid="new.classpath" />
      </javac>
   </target>
</project>

ivy.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
   <info organisation="org.apache" module="chained-resolvers"/>
   <dependencies>
      <dependency org="commons-lang" name="commons-lang" rev="2.6" conf="default"/>
      <dependency org="com.tutorialspoint" name="test" rev="1.0"/>
   </dependencies>
</ivy-module>

Здесь мы добавили две зависимости, одну из библиотеки commons-lang, а другую в качестве теста, который мы опубликовали в главе IVY - Publish Task .

ivysettings.xml

<ivysettings>
   <settings defaultResolver="multiresolver"/>
   <resolvers>
      <chain name="multiresolver">
         <filesystem name="libraries">
            <artifact pattern="${ivy.settings.dir}/repository/[artifact]-[revision].[ext]"/>
         </filesystem>
         <ibiblio name="ibiblio" m2compatible="true"/>
      </chain>
   </resolvers>
</ivysettings>

Здесь мы добавили созданный составной преобразователь с использованием цепного преобразователя, который имеет два преобразователя: одну именованную библиотеку для поиска библиотек в локальном репозитории, а другую - ibiblio в общедоступном репозитории maven.

Сборка проекта

Поскольку у нас все файлы готовы. Просто зайдите в консоль. Перейдите кE: > ivy2 папку и запустите команду ant.

E:\ivy > ant

Ivy вступит в действие, разрешив зависимости, вы увидите следующий результат.

Buildfile: E:\ivy2\build.xml
resolve:
[ivy:resolve] :: Apache Ivy 2.5.0 - 20191020104435 :: https://ant.apache.org/ivy
/ ::
[ivy:resolve] :: loading settings :: url = jar:file:/E:/Apache/apache-ant-1.9.14
/lib/ivy-2.5.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
[ivy:resolve] :: resolving dependencies :: org.apache#chained-resolvers;working@
Acer-PC
[ivy:resolve]   confs: [default]
[ivy:resolve]   found commons-lang#commons-lang;2.6 in public
[ivy:resolve]   found com.tutorialspoint#test;1.0 in local
[ivy:resolve]   found junit#junit;3.8.1 in public
[ivy:resolve] downloading C:\Users\Acer\.ivy2\local\com.tutorialspoint\test\1.0\
jars\application.jar ...
[ivy:resolve] .. (1kB)
[ivy:resolve] .. (0kB)
[ivy:resolve]   [SUCCESSFUL ] com.tutorialspoint#test;1.0!application.jar (13ms)
[ivy:resolve] :: resolution report :: resolve 1085ms :: artifacts dl 22ms
      ---------------------------------------------------------------------
      |                  |            modules            ||   artifacts   |
      |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
      ---------------------------------------------------------------------
      |      default     |   3   |   3   |   1   |   0   ||   5   |   1   |
      ---------------------------------------------------------------------
BUILD SUCCESSFUL
Total time: 9 seconds

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

Локальный репозиторий - это частный репозиторий пользователя. Это очень полезно, если пользователь использует библиотеку, версия которой была изменена в других местах и ​​имеет критические изменения. В случае локального репозитория ivy будет использовать библиотеку, присутствующую в локальном репозитории, если она будет найдена, и не будет искать публичные или общие репозитории.

Местоположение по умолчанию

По умолчанию локальный репозиторий находится в папке $ {ivy.default.ivy.user.dir} / local. Если вы хотите его изменить, используйте переменную ivy.local.default.root в файле ant.

build.xml

<target name="resolve">
   <property name="ivy.local.default.root" value="/opt/ivy/repository/local"/>
   <ivy:resolve />
</target>

Другие свойства, такие как узор плюща и узор артефакта, также можно настроить следующим образом:

build.xml

<target name="resolve">
   <property name="ivy.local.default.root" value="/opt/ivy/repository/local"/>
   <property name="ivy.local.default.ivy.pattern" value="[module]/[revision]/ivy.xml"/>
   <property name="ivy.local.default.artifact.pattern" value="[module]/[revision]/[artifact].[ext]"/>
   <ivy:resolve />
</target>

Отмена настроек по умолчанию для ivysettings

По умолчанию ivy имеет свои конфигурации в ivysettings.xml, присутствующем в ivy.jar.

ivysettings.xml

<ivysettings>
   <settings defaultResolver="default"/>
   <include url="${ivy.default.settings.dir}/ivysettings-public.xml"/> <include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/>
   <include url="${ivy.default.settings.dir}/ivysettings-local.xml"/> <include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/>
   <include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
</ivysettings>

Чтобы переопределить настройку локального репозитория, обновите содержимое ivysettings-local.xml.

ivysettings-local.xml

<ivysettings>
   <property name="ivy.local.default.root" value="${ivy.default.ivy.user.dir}/local" override="false"/>
   <property name="ivy.local.default.ivy.pattern" value="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" override="false"/>
   <property name="ivy.local.default.artifact.pattern" value="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" override="false"/>
   <resolvers>
      <filesystem name="local">
         <ivy pattern="${ivy.local.default.root}/${ivy.local.default.ivy.pattern}" />
         <artifact pattern="${ivy.local.default.root}/${ivy.local.default.artifact.pattern}" />
      </filesystem>
   </resolvers>
</ivysettings>

Общий репозиторий - это общий репозиторий на уровне команды. В организациях это очень распространено.

Местоположение по умолчанию

По умолчанию общий репозиторий находится в папке $ {ivy.default.ivy.user.dir} / shared. Если вы хотите его изменить, используйте переменную ivy.shared.default.root в файле ant.

build.xml

<target name="resolve">
   <property name="ivy.shared.default.root" value="/opt/ivy/repository/shared"/>
   <ivy:resolve />
</target>

Другие свойства, такие как узор плюща и узор артефакта, также можно настроить следующим образом:

build.xml

<target name="resolve">
   <property name="ivy.shared.default.root" value="/opt/ivy/repository/shared"/>
   <property name="ivy.shared.default.ivy.pattern" value="[organisation]/[module]/[revision]/ivy.xml"/>
   <property name="ivy.shared.default.artifact.pattern" value="[organisation]/[module]/[revision]/[artifact].[ext]"/>
   <ivy:resolve />
</target>

Отмена настроек по умолчанию для ivysettings

По умолчанию ivy имеет свои конфигурации в ivysettings.xml, присутствующем в ivy.jar.

ivysettings.xml

<ivysettings>
   <settings defaultResolver="default"/>
   <include url="${ivy.default.settings.dir}/ivysettings-public.xml"/>
   <include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/> <include url="${ivy.default.settings.dir}/ivysettings-local.xml"/>
   <include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/> <include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
</ivysettings>

Чтобы переопределить настройку общего репозитория, обновите содержимое ivysettings-shared.xml.

ivysettings-shared.xml

<ivysettings>
   <property name="ivy.shared.default.root" value="${ivy.default.ivy.user.dir}/shared" override="false"/> <property name="ivy.shared.default.ivy.pattern" value="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" override="false"/> <property name="ivy.shared.default.artifact.pattern" value="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" override="false"/> <resolvers> <filesystem name="shared"> <ivy pattern="${ivy.shared.default.root}/${ivy.shared.default.ivy.pattern}" /> <artifact pattern="${ivy.shared.default.root}/${ivy.shared.default.artifact.pattern}" />
      </filesystem>
   </resolvers>
</ivysettings>

Публичный репозиторий - это репозиторий, доступный через Интернет и имеющий сторонние модули. По умолчанию ibiblio в режиме совместимости с m2 является публичным хранилищем. Его также называют публичным репозиторием maven 2.

Отмена настроек по умолчанию для ivysettings

По умолчанию ivy имеет свои конфигурации в ivysettings.xml, присутствующем в ivy.jar.

ivysettings.xml

<ivysettings>
   <settings defaultResolver="default"/>
   <include url="${ivy.default.settings.dir}/ivysettings-public.xml"/>
   <include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/> <include url="${ivy.default.settings.dir}/ivysettings-local.xml"/>
   <include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/> <include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
</ivysettings>

Чтобы переопределить настройку общедоступного репозитория, обновите содержимое ivysettings-public.xml или создайте ivysettings.xml в папке настроек вашего проекта.

ivysettings.xml

<ivysettings>
   <settings defaultResolver="default"/>
   <include url="http://customserver/ivy/ivysettings-public.xml"/>
   <include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/> <include url="${ivy.default.settings.dir}/ivysettings-local.xml"/>
   <include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/> <include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
</ivysettings>

Обновите содержимое ivysetting-public.xml по умолчанию.

Original - ivysetting-public.xml

<ivysettings>
   <resolvers>
      <ibiblio name="public" m2compatible="true"/>
   </resolvers>
</ivysettings>

Updated - ivysetting-public.xml

<ivysettings>
   <resolvers>
      <filesystem name="public">
         <ivy pattern="/path/to/my/public/rep/[organisation]/[module]/ivy-[revision].xml" />
         <artifact pattern="/path/to/my/public/rep/[organisation]/[module]/[artifact]-[revision].[ext]" />
      </filesystem>
   </resolvers>
</ivysettings>