Как заставить Grails получать последние локальные банки из репозитория Maven?
- В моем репозитории Maven (.m2). есть один мой локальный jar, такой как sub_app-0.1.jar.
- У меня есть такая же копия в ivy-cache.
- я бегу
maven install
на sub_app, затем создается новый файл sub_app-0.1.jar. - После того, как я бегу
grails clean
и он не получает мой новый sub_app-0.1.jar от.m2. Но если я удаляю (удаляю) файл sub_app-0.1.jar из ivy-cache и запускаю
grails clean
затем он получает новый файл sub_app-0.1.jar в ivy-cache.Если я поменяю версию в подпапке pom и grails pom, то Grails берет последнюю версию. установить снова, не принимая.
- Я попытался, добавив SNAPSHOT в sup-app jar даже. Тот же результат, первый раз, когда он принимает, после нет.
то есть. Grails рассматривает только имя jar и версию в ivy-cache, если есть - его не беру. Если не имея - это берет от.m2.
Но это не учитывая новую / старую сборку.
Как я могу получить такое же поведение (шаг 5) на шаге 4?
3 ответа
Grails не поддерживает получение последних одинаковых (group-id, artifact-id, version) jar и даже SNAPSHOT jar.
Решения:
- Каждый раз удаляйте sub-app-version.jar из ivy-cache. или же
- Каждый раз меняйте версию на следующее значение (должно быть больше, чем текущее значение) 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, я поклонился его знаниям и обошел это:
- пакет maven вместо установки на "интерфейсы", а затем скопируйте последнюю версию jar в ivy-cache. Кажется, STS позволит мне заменить содержимое банки. Затем Grails Clean использует последнюю флягу из ivy-cache (без попытки загрузки с maven).
- maven устанавливает на "интерфейсы", закрывает STS, удаляет jar из ivy-cache, повторно открывает STS, очищает grails, который загружает последнюю версию jar из maven.
Оба обходных пути - боль, так что мне было бы интересно, есть ли у кого-нибудь идеи?