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>