Использовать несколько файлов в Ivy makepom Ant target

В моем проекте есть несколько в основном независимых модулей, каждый из которых имеет свои собственные файлы Ivy. Пара модулей «высшего уровня» в том смысле, что от них ничего не зависит, они просто зависят от других модулей.

Я хотел бы создать pom для этих модулей, чтобы использовать их для публикации зависимостей, которые будут потреблять мои пользователи.

Задача makepom принимает только один файл с атрибутом ivyfile. Я создаю главный модуль, который объявляет, что он зависит от модулей верхнего уровня, и предоставляю это makepom, но он не включает транзитивно зависимости модулей верхнего уровня, он только перечисляет сами модули верхнего уровня.

Я понимаю, что мог бы просто предоставить несколько файлов pom, но для моего здравомыслия я бы предпочел оставить только один.

Поэтому мне интересно, можете ли вы каким-то образом передать несколько файлов Ivy задаче make pom или есть способ заставить ее перечислить все зависимости, когда я использую главный файл Ivy? Или, в худшем случае, есть ли простой способ объединить файлы pom, не делая это вручную?


person Michael    schedule 20.11.2012    source источник
comment
Вся цель Ivy (а также Maven и Gradle) состоит в том, чтобы не беспокоиться о транзитивных зависимостях. Если у вас все настроено правильно, ваш pom.xml должен отображать только зависимости верхнего уровня и ничего больше. Когда Ivy (или Maven) извлекает эти модули верхнего уровня, он вытаскивает эти зависимости. Есть что-то, что мне не хватает?   -  person David W.    schedule 20.11.2012
comment
Нет, я просто хотел, чтобы все было в одном файле, больше как артефакт документации, чем что-либо еще — в данный момент мы распространяем его в виде txt-файла. Само приложение имеет закрытый исходный код, поэтому маловероятно, что кто-то сможет получить его из Maven Central.   -  person Michael    schedule 20.11.2012


Ответы (2)


Если это касается документации, настройте каждый модуль для создания отчета о его транзитивных зависимостях, см. ivy отчет о задаче.

Задача makepom принимает только один аргумент, поскольку, как и модули проекта Maven имеют только один файл, в котором объявляются его зависимости.

Возможно, вы могли бы создать родительский файл ivy, который имеет зависимость от каждого дочернего модуля?

person Mark O'Connor    schedule 20.11.2012
comment
Я попытался создать родительский файл ivy, который имел зависимости от дочерних модулей, и это сработало, я получил pom, в котором говорилось, что это зависит от этих модулей, но нет списка их банок. Мне пришлось бы тогда makepom каждый дочерний модуль. Я понимаю, что, вероятно, это был бы лучший способ сделать это, но я не хочу предоставлять 22 pom в дистрибутиве. - person Michael; 21.11.2012
comment
@Michael. Лучше всего создать отчет о зависимостях на основе родительского файла ivy. Это позволит получить все зависимости. Родительские POM Maven редко дают вам полную картину. (Maven как эквивалентная функция отчетности о зависимостях) - person Mark O'Connor; 21.11.2012

Как отметил Марк О'Коннор, задача <ivy:report> прекрасно документирует все транзитивные банки. Какие из них необходимы для выполнения, компиляции и т. д.

Другая возможность - использовать <ivy:retrieve> для извлечения всех jar-файлов, используемых вашим мастер-модулем, в пустой каталог. Даже если этого не требует ваш проект. Список необходимых банок будет простым списком каталогов.

person David W.    schedule 21.11.2012