Необходимо определить "преобразователь". Что-то как:
<ivy:publish resolver="local" pubrevision="1.0"/>
Этим управляет шаблон. Этот страница покрывает его вполне прилично. Похоже, что Вы хотите, чтобы Ваш был:
<artifacts pattern="${dist.dir}/[organisation]-[module]-[revision]-[type].[ext]" />
И необходимо будет идентифицировать эти три банки как артефакты в файле ivy.xml. Что-то вроде этого:
<publications>
<artifact name="utils"/>
<artifact name="utils" type="source"/>
<artifact name="utils" type="javadocs"/>
</publications>
Важно понять то, что плющ делает здесь. Это просто не копирует Ваши банки артефакта в репозиторий плюща - это также генерирует соответствующие файлы ".ivy.xml", которые определяют всех зависимых каждого из Ваших артефактов.
Под покрытиями, ivy:retrieve
задача на самом деле также инициировала ivy:resolve
. Когда это, ivy:resolve происходит, файл, записано в Ваш локальный кэш плюща (в .ivy
папка в user.home
), который определяет, как разрешение произошло (который, изменения которого модули потребовались, чтобы завершать разрешение.), Когда ivy:publish
встречен, та запись разрешения получается от кэша и используется для генерации ivy.xml для артефактов.
самая большая ловушка я нашел в выполнении, это - требование, что ivy:resolve
и ivy:publish
задачи оба быть загруженным тем же classloader, когда они выполняются муравьем. Самый легкий способ удостовериться это происходит, должен использовать loaderRef на Ваших taskdef задачах. Например (отмечают соответствие loaderRef теги):
<taskdef name="ivy-retrieve"
classname="org.apache.ivy.ant.IvyRetrieve"
classpathref="ivy.lib"
loaderRef="ivy.loader"/>
<taskdef name="ivy-publish"
classname="org.apache.ivy.ant.IvyPublish"
classpathref="ivy.lib"
loaderRef="ivy.loader"/>