Предполагается, что вы сначала запустите задачу <ivy:deliver/>
. Это создает файл ivy.xml, который может использоваться репозиторием Ivy.
Когда вы используете <ivy:publish>
, вы указываете, какой репозиторий вы хотите опубликовать, указав его в параметре resolver
. Это должно соответствовать имени распознавателя в вашем файле ivy.settings.xml
.
Вы на самом деле не указываете артефакты, но указывает, где искать артефакты для публикации. Это указывается в подзадаче <artifacts>
в задаче <ivy:publish>
. Например, если вы строите все в каталоге ${basedir}/target/archive
, как мы, вы можете указать его так:
<ivy:publish resolver="public">
<artifacts path="target/archive/[artifact].[ext]"/>
</ivy:publish>
Если вы хотите изменить номер версии вашего файла, вы можете использовать параметр pubrevision задачи <ivy:publish>
. Это не обновит ivy.xml
, но опубликует ваши jars / wars до правильной ревизии. Я предпочитаю использовать параметр pubrevision задачи <ivy:deliver>
и позволить ему в любом случае создать правильный файл ivy.xml
. Затем <ivy:publish>
будет использовать ревизию в моем файле ivy.xml
.
Вам не нужно делать <ivy:retrieve>
. В конце концов, вы запускаете сборку для создания новых jar-файлов, и они должны быть НЕКОТОРЫМИ в вашей сборке. В противном случае, если вы не создаете банку или войну, что вы пытаетесь опубликовать в своем хранилище Ivy? И вы, конечно же, не хотите получать что-то уже в своем репозитории Ivy, чтобы просто переиздать это.
Моя философия всегда заключалась в том, что публикация является задачей CM и не должна выполняться в рамках процедуры сборки. Таким образом, мы не используем <ivy:deliver>
или <ivy:publish>
.
Мы используем Artifactory в качестве нашего хранилища Ivy (и нашего хранилища Maven). Мы используем Jenkins в качестве нашего сервера непрерывной сборки.
Я хочу, чтобы разработчики сделали файл pom.xml
из своего файла ivy.xml
с помощью задачи <ivy:makepom>
. Это и сборочные файлы / войны сохраняются как архивные артефакты в Jenkins.
Когда мы довольны конкретной сборкой и хотим, чтобы она была в нашем общедоступном репозитории, я использую задачу Jenkin Promote Build для продвижения конкретного jar / war с его pom.xml в наш репозиторий Artifactory. Для этого мы используем задачу mvn deploy:deploy-file
.