У Ivy различное поведение разрешения в зависимости от атрибута статуса? - PullRequest
1 голос
/ 29 июля 2011

Мой коллега указал на недостаток в поддержании наших артефактов (все еще несколько новых для Айви):

Сборки выпуска помечены как «интеграция», что означает, что они перепроверяют новые версии в каждой сборке, замедляя сборку, даже если она кэшировала зависимости.

Для меня это не имело особого смысла, поскольку, как мне кажется, Айви все еще нужно проверить, что находится в репо, прежде чем принимать решение о версии для доставки. Итак, я решил исследовать это, чтобы немного понять, каковы результаты маркировки библиотек с различными значениями статуса. Я не могу найти много в документации, хотя, или в сети. Что мне не хватает? Может ли кто-нибудь пролить свет на это?

Спасибо

1 Ответ

1 голос
/ 02 августа 2011

Статус - это просто строка, которую можно определить для плюща. Они не влияют на разрешение артефактов как таковых. Это не влияет на поиск по умолчанию. Это просто маркер для артефакта.

Состояние

Статус ревизии Статус модуля показывает, насколько стабильным является модуль пересмотр можно рассмотреть. Может использоваться для закрепления статуса из всех зависимостей модуля, чтобы предотвратить использование Интеграция пересмотр зависимости в выпуске вашего модуля.

В Ivy по умолчанию определены три состояния:

integration: revisions builded by a continuous build, a nightly

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

Вам необходимо объявить зависимость как изменяющуюся или определение решателя , чтобы добиться того, о чем говорил ваш коллега:

Изменения в артефактах Некоторые люди, особенно те, которые приходят из Maven 2 земля, нравится использовать одну специальную ревизию для обработки часто обновляемых модули. В Maven 2 это называется версией SNAPSHOT, и некоторые утверждают, что это помогает сэкономить место на диске, чтобы сохранить только одну версию для высокого количество промежуточных сборок, которые вы можете сделать во время разработки.

Айви поддерживает такой подход с понятием «изменение ревизия ". Изменяющаяся ревизия - это всего лишь ревизия, для которой Айви Следует учитывать, что артефакты могут меняться со временем. Обрабатывать это, вы можете указать зависимость как изменение на тег зависимости, или используйте changePattern и changeMatcher атрибуты ваших резольверов, чтобы указать, какая ревизия или группа изменения должны рассматриваться как изменяющиеся.

Как только Айви узнает, что ревизия меняется, она последует за этим принцип, чтобы избежать проверки вашего хранилища слишком часто: если модуль метаданные не изменились, будет рассмотрен весь модуль (включая артефакты) как не изменилось. Даже если дескриптор модуля файл изменился, он проверит данные публикации модуля в посмотрите, является ли это новая публикация той же ревизии или нет. Тогда если дата публикации изменилась, она проверит последние артефакты измените временные метки и загрузите их соответственно.

Так что, если вы хотите использовать изменение ревизий, используйте задачу публикации для опубликуйте свои модули, он позаботится об обновлении публикации дата, и все будет работать нормально. И не забудьте установить checkModified = true "на вашем распознавателе тоже!

...