2013-05-13 1 views
5
  1. В моем maven repo (.m2). есть одна моя локальная банка, такая как sub_app-0.1.jar.
  2. У меня такая же копия, что и в плющовом кэше.
  3. Я запустил maven install на sub_app, затем создал новый файл sub_app-0.1.jar.
  4. После этого я запускаю грайлы и не получаю свой новый sub_app-0.1.jar от .m2.
  5. Но если я удалю (удалю) файл sub_app-0.1.jar из ivy-cache и запустил grails clean, то он получит новый файл sub_app-0.1.jar в плющ-кеш.Grails - Как заставить grails получить последние локальные баночки из хранилища maven

  6. Если я изменю версию в sub-app pom, а grails pom и grails берут последний. установите снова, чтобы он не принимал.

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

ie. Grails рассматривает только имя и версию jar в плющовом кэше, если есть - это не требуется. если Not having - это брать из .m2.

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

Пожалуйста, также помогите получить такое же поведение (шаг 5) на шаге 4.

ответ

0

ОБНОВЛЕНО

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

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

к сожалению, "useOrigin правда" не работает. Не могли бы вы предложить мне другой путь. – Sun

+0

Я использовал -SNAPSHOT также, даже не решил, может ли любой орган мне помочь – Sun

+0

change = true также не работает в моем случае – Sun

0

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

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

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

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

  1. Maven пакет вместо установки на «интерфейсах», затем скопируйте последнюю банку в кэш плюща. Кажется, STS позволит мне заменить содержимое банки. Затем grails clean использует последнюю банку из плюща-кеша (без попытки загрузить с maven).
  2. maven install on 'interfaces', закрыть STS, удалить банку из плющ-кеша, повторно открыть STS, grails clean, который загружает последнюю банку из maven.

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

+0

О, и я использую grails v2.0.1 и sts v2.9.1.RELEASE, если это помогает. – shuttsy

+0

Я использую Grails 2.1.4 и Groovy 2.0.4 и java 1.7, я чувствую, что это не очень хорошая идея - каждый раз удаляйте из плюща-кеша. – Sun

0

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

Решение:

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

4 Configuration - Reference Documentation

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

4.7.6 снимков и других Изменение зависимости

+0

Анонимное предлагаемое редактирование (http://stackoverflow.com/review/spected-edits/2495777) предлагает: в версии Grails 2.3 и более поздних версиях эта проблема решена, - она ​​дает возможность использовать только maven-репозиторий, поэтому он не будет Создайте папку с плющом-кешем по крайней мере. –