Публикация плюща в репозитории не обновляет локальный кеш - PullRequest
3 голосов
/ 08 января 2011

Дано:

  • Сборка с использованием Hudson / Ant.
  • Тайм-аут Ivy-кэша установлен на 5 минут.
  • В репозитории Ivy содержится Project A версии 2.2.2 и Project B версии 1.1.1.
  • Проект B опирается на проект A.

События:

  1. Изменение API внесено в проект A.
  2. Внесены соответствующие изменения в проект B.
  3. Проект версии 2.2.3 построен и опубликован в хранилище.
  4. Менее чем через 5 минут, проект B версии 1.1.2. Построен 2.
  5. Проект B завершается неудачно, все еще загружая Project A версии 2.2.2 из Ivy Cache.
  6. Через 5 минут Project B будет работать правильно, с Project A версии 2.2.3

Я смотрел, но не вижу очевидного решения (кроме кеширования?).Есть ли параметр публикации, который обновит локальный кеш и репо?Вам нужно явно опубликовать в обоих?

Ответы [ 2 ]

0 голосов
/ 15 марта 2011

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

ivy.cache.ttl.default                 = 30s

Возможно, это решило бы вашу проблему, пока. Хотя это не намного лучше, чем не кеширование.

Вдобавок ко всему, я мог бы попробовать отключить кеширование, но затем заново реализовать кеширование вручную, создав распознаватель файловой системы в файле настроек ivy, который указывает на кеш и помещая это ниже по цепочке. Это будет выглядеть примерно так:

<ivysettings>
    <settings defaultResolver="all-repositories" />
    <include file="ivysettings-common.xml" />
    <resolvers>
        <chain name="all-repositories" returnFirst="true" >
            ...
            <ibiblio name="ibiblio" m2compatible="true" />
            <filesystem name="manual-cache">
                <ivy pattern="${ivy.default.ivy.user.dir}/cache/${ivy.local.default.ivy.pattern}" />
                <artifact pattern="${ivy.default.ivy.user.dir}/cache/${ivy.local.default.artifact.pattern}" />
            </filesystem>
            ...
        </chain>    
    </resolvers>
</ivysettings>

Примечание: это ivy.default.ivy.user.dir , ivy.local.default.ivy.pattern и ivy.local.default.artifact.pattern - это встроенные свойства, которые установлены по умолчанию. Я ссылаюсь на них здесь, в этом примере, но мне не нужно было бы предпринимать никаких других особых усилий для их установки (они уже содержат правильные значения по умолчанию).

Я надеюсь, что один из этих подходов поможет решить вашу проблему. Это единственные два возможных решения, которые приходят на ум прямо сейчас.

0 голосов
/ 29 января 2011

Просто предположение: если A и B построены на одном компьютере, будет ли выполнение в конце сборки A обновлять кэш? Конечно, это не поможет, если A и B будут работать на разных машинах ...

...