Разрешив мой файл ivy.xml
, я хочу создать новый файл resolved-ivy.xml
, состоящий из всех переходных зависимостей, найденных в разрешении. Возможно ли это сделать?
Это отличается от доставки, которая (я полагаю) записывает только непосредственные зависимости от вашего ivy.xml
, а не транзитивные зависимости. Задача Ant deliver
имеет атрибут delivertarget
, который в документации выглядит как это должно сделать это. На практике он работает только для модулей в одной организации (поэтому обычно не для всех зависимостей) и создает файл для каждого модуля.
Он также отличается от XML-файла ivy-report
, который создается во время разрешения, но не сильно отличается. Если то, что я пытаюсь сделать, невозможно, то, я полагаю, я просто взломаю этот файл напрямую.
Контекст здесь пытается обеспечить повторяемость воспроизводимых сборок, в том числе при наличии изменений (новых библиотек, версий) в репозитории. В Интернете есть сообщения, которые пытаются это сделать, и ни один из них, который я нашел, не может сделать это должным образом.
- Дополнения к репозиторию Ivy могут изменить результаты разрешения, в частности, если какие-либо зависимости в любом месте репозитория (не только ваш проект) имеют зависимости от диапазона. Пример:
A
зависит отB;[2.0,4.0]
, аB;3.1
позже добавляется в репозиторий. - Идея состоит в том, чтобы разрешить как обычно, записать разрешение в виде сплющенного файла Ivy, сохранить его в системе контроля версий вашего проекта для этого тега (или чего-то еще) и впоследствии разрешить этот файл с помощью
transitive="false"
. Предполагая, что существующие элементы в репозитории не изменяются, это позволяет повторять сборки. - Если у кого-то есть лучшие идеи для этого, я все уши. На данный момент я ожидаю, что мне придется взломать некоторую комбинацию
ResolveEngine
, чтобы сделатьResolveReport
доступным, а затем добавить пользовательскоеDeliverEngine
, чтобы использовать его.