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

  1. В моем репозитории Maven (.m2). есть одна моя локальная банка, например 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. Тот же результат, первый раз принимает, после нет.

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

Но это без учета новой/старой сборки.

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


person Sun    schedule 13.05.2013    source источник


Ответы (3)


ОБНОВЛЕНО

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

compile ('YOUR_GROUP_ID:YOUR_SUB_AP:0.1') {
    changing = true
}
person rimero    schedule 13.05.2013
comment
извините, но useOrigin true не работает. Не могли бы вы предложить мне другой способ. - person Sun; 13.05.2013
comment
Я также использовал -SNAPSHOT, даже не решил, может ли кто-нибудь помочь мне, пожалуйста - person Sun; 14.05.2013

Не уверен, что это та же проблема, что и у вас, но я использую 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 вместо установки на «интерфейсы», затем скопируйте последнюю банку в ivy-cache. Кажется, СТС позволит мне заменить содержимое банки. Затем Grails clean использует последнюю банку из ivy-cache (без попыток загрузки из maven).
  2. maven установить на «интерфейсы», закрыть STS, удалить банку из ivy-cache, снова открыть STS, выполнить очистку Grails, которая загружает последнюю банку из maven.

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

person shuttsy    schedule 14.05.2013
comment
О, и я использую grails v2.0.1 и sts v2.9.1.RELEASE, если это поможет. - person shuttsy; 14.05.2013
comment
Я использую Grails 2.1.4 и Groovy 2.0.4 и java 1.7, я чувствую, что это не очень хорошая идея - каждый раз удалять из ivy-cache. - person Sun; 15.05.2013

Grails не поддерживает получение последней версии одного и того же (идентификатора группы, идентификатора артефакта, версии) jar-файла, даже jar-файла SNAPSHOT.

Решения:

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

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

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

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

person Sun    schedule 15.05.2013
comment
Анонимное предлагаемое изменение (stackoverflow.com/review/suggested-edits/2495777) предлагает: В Grails 2.3 и более поздних версиях версии решили эту проблему, - это дает возможность использовать только репозиторий maven, поэтому он не будет создавать папку ivy-cache, по крайней мере. - person AKS; 12.07.2013