Как заставить Grails получать последние локальные банки из репозитория Maven?

  1. В моем репозитории Maven (.m2). есть один мой локальный jar, такой как sub_app-0.1.jar.
  2. У меня есть такая же копия в ivy-cache.
  3. я бегу maven install на sub_app, затем создается новый файл sub_app-0.1.jar.
  4. После того, как я бегу grails clean и он не получает мой новый sub_app-0.1.jar от.m2.
  5. Но если я удаляю (удаляю) файл sub_app-0.1.jar из ivy-cache и запускаю grails clean затем он получает новый файл sub_app-0.1.jar в ivy-cache.

  6. Если я поменяю версию в подпапке pom и grails pom, то Grails берет последнюю версию. установить снова, не принимая.

  7. Я попытался, добавив SNAPSHOT в sup-app jar даже. Тот же результат, первый раз, когда он принимает, после нет.

то есть. Grails рассматривает только имя jar и версию в ivy-cache, если есть - его не беру. Если не имея - это берет от.m2.

Но это не учитывая новую / старую сборку.

Как я могу получить такое же поведение (шаг 5) на шаге 4?

3 ответа

Grails не поддерживает получение последних одинаковых (group-id, artifact-id, version) jar и даже SNAPSHOT jar.

Решения:

  1. Каждый раз удаляйте sub-app-version.jar из ivy-cache. или же
  2. Каждый раз меняйте версию на следующее значение (должно быть больше, чем текущее значение) jar-приложения в pom.xml.

4 Конфигурация - Справочная документация

Пожалуйста, прочитайте:

4.7.6 Снимки и другие изменяющиеся зависимости

ОБНОВЛЕНО

Вы можете попробовать добавить change =true к вашей зависимости в BuildConfig.groovy, как указано в Руководстве по Grails.

compile ('YOUR_GROUP_ID:YOUR_SUB_AP:0.1') {
    changing = true
}

Не уверен, что это та же проблема, что и у вас, но я использую Spring Source Tool Suite (STS) с проектом 'grails', зависящим от проекта 'interfaces' (который просто содержит интерфейсы, bean-компоненты, pojos и т. Д.).

Если я запускаю установку maven на интерфейсах в STS, то maven корректно обновляется с помощью последней версии jar (в качестве номера версии я использую -1.0-SNAPSHOT).

Если я затем запустил grails clean в моем проекте 'grails' в STS, Grails правильно идентифицирует изменение jar интерфейсов (у меня есть {change =true} в BuildConfig.groovy), загружает pom, но не может загрузить jar как он не может удалить банку из кеша плюща. Похоже, что STS имеет дескриптор ivy-cache, который предотвращает это.

Поскольку я унаследовал этот проект от другого разработчика, который сообщил мне, что это ошибка / особенность Grails и / или STS, я поклонился его знаниям и обошел это:

  1. пакет maven вместо установки на "интерфейсы", а затем скопируйте последнюю версию jar в ivy-cache. Кажется, STS позволит мне заменить содержимое банки. Затем Grails Clean использует последнюю флягу из ivy-cache (без попытки загрузки с maven).
  2. maven устанавливает на "интерфейсы", закрывает STS, удаляет jar из ivy-cache, повторно открывает STS, очищает grails, который загружает последнюю версию jar из maven.

Оба обходных пути - боль, так что мне было бы интересно, есть ли у кого-нибудь идеи?

Другие вопросы по тегам