Статьи

Выпущен Apache Ivy 2.5.0-rc1 — теперь разрешены тайм-ауты для распознавателей

Несколько недель назад мы выпустили версию Apache Ivy 2.5.0-rc1. Apache Ivy — это инструмент для построения управления зависимостями, который обычно используется в сочетании с Apache Ant. Загрузка доступна на странице загрузки проекта.

Этот выпуск является значительным, поскольку последний выпуск Apache Ivy был выпущен еще в декабре 2014 года. Таким образом, прошло более 3 лет с последних официальных лет. В течение последних нескольких лет развитие проекта на некоторое время остановилось. Я использую Apache Ivy в некоторых наших проектах и ​​был очень доволен этим инструментом. Это никогда не является хорошим признаком того, что один из ваших активно используемых инструментов больше не разрабатывается и даже не имеет исправлений ошибок. Примерно год назад я решил внести некоторые исправления в проект. Со временем комитет по управлению проектом пригласил меня стать частью команды.

Мы решили, что первой очевидной, непосредственной целью будет оживить проект и сделать официальный релиз с исправлениями ошибок. Этот 2.5.0-rc1 является результатом тех усилий, которые начались почти год назад. В этот выпуск было внесено много изменений, а также большое количество улучшений. Этот релиз был результатом вклада различных членов сообщества. Полный список заметок о выпуске доступен здесь

Мы намеренно назвали этот выпуск 2.5.0-rc1 (кандидат на выпуск), так как уже давно мы сделали официальный релиз, а также с учетом характера изменений. Пожалуйста, дайте этой версии попробовать и дайте нам знать, как она идет. В зависимости от обратной связи мы выпустим 2.5.0 или 2.5.0-rc2. Как обычно, некоторые из нас из команды разработчиков активно следят за рассылкой пользователей ivy
список Так что если у вас есть какие-либо отзывы или вопросы, пожалуйста, напишите нам, там.

Теперь перейдем к одному из улучшений в этом выпуске — их было больше, чем одно. Одна из проблем, с которыми я лично столкнулся, заключалась в том, что если в хранилище, поддерживающем средство разрешения зависимостей, настроенное для Ivy, возникли проблемы с подключением, сборка зависла бы. Это было связано с невозможностью указать правильные тайм-ауты для связи с этими репозиториями через распознаватель. Начиная с этого выпуска, Ivy теперь позволяет настраивать тайм-ауты для распознавателей. Это делается с помощью (нового) элемента timeout-constraints в вашем файле настроек Ivy. Подробнее об этом есть
здесь Представьте, что у вас есть преобразователь URL, который указывает на какой-то URL. Средство распознавания URL обычно выглядит примерно так:

1
2
3
4
5
<url name="foo">
  <ivy pattern=.../>
  <artifact pattern=.../>
  <artifact pattern=.../>
</url>

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

1
2
3
<timeout-constraints>
        <timeout-constraint name="timeout-1" connectionTimeout="60000" />
</timeout-constraints>

Значение атрибута name может быть любым на ваш выбор. Значение атрибута connectionTimeout представляется как время ожидания в миллисекундах. В приведенном выше примере мы настраиваем ограничение времени ожидания «timeout-1» на 1 минуту. Вы даже можете указать readTimeout, который тоже находится в миллисекундах. Подробнее об этом элементе можно узнать в
документация

Как вы могли заметить, мы только что определили здесь ограничение по таймауту, но еще не проинструктировали Айви использовать это ограничение для некоторого распознавателя. Мы сделаем это на следующем шаге, где мы устанавливаем атрибут «timeoutConstraint» в преобразователе URL, который мы видели ранее:

1
2
3
4
5
<url name="foo" timeoutConstraint="timeout-1">
  <ivy pattern=.../>
  <artifact pattern=.../>
  <artifact pattern=.../>
</url>

Обратите внимание, что значение атрибута «timeoutConstraint» теперь указывает на «timeout-1», который мы определили как время ожидания соединения 1 минуту. При этом, когда этот распознаватель URL-адресов выбирается Ivy для разрешения зависимостей, этот тайм-аут соединения будет принудительно установлен, и если не удается установить соединение в течение этого тайм-аута, то исключение выдается вместо зависания сборки навсегда.

Несмотря на то, что в примере для разрешения ограничения времени ожидания используется распознаватель URL-адресов, эта функция доступна для всех распознавателей, поставляемых Ivy из коробки. Так что вы даже можете использовать его с распознавателем ibiblio (который связывается с Maven central).

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

См. Оригинальную статью здесь: выпущен Apache Ivy 2.5.0-rc1 — теперь разрешены тайм-ауты для распознавателей

Мнения, высказанные участниками Java Code Geeks, являются их собственными.