2009-12-08 2 views
3

Я разрабатываю небольшой веб-интерфейс в Grails. Это в основном «сверхлегкое» клиентское приложение, которое подключается через JMS через async.Grails и Local Maven Зависимости

У меня есть две зависимости в проекте, которые я хотел бы извлечь из репозитория Maven. Это activemq и acme-adapter-api, внутренняя зависимость, недоступная в удаленном репозитории.

Я настроил свой BuildConfig.groovy (Grails 1.2M4 файл), как это, для того, чтобы получить доступ к своим зависимостями:

repositories { 
    grailsPlugins() 
    grailsHome() 
    mavenCentral() 
    mavenRepo('D:/maven-repo') 
} dependencies { 
    compile 'org.apache.activemq:apache-activemq:4.1.1' 
    compile 'com.acme:acme-adapter-api:1.3-SNAPSHOT' 
} 

Когда я бегу grails dependency-report, я могу видеть эту линию относительно acme-adapter-api, например, :

acme-adapter-api by com.acme 
108 kB (0 kB downloaded, 108 kB in cache) 

Когда я пытаюсь запустить grails compile, я не повезти, так как это то жалуется, что не может решить классы от com.acme.

Интересно, что activemq зависимости не кажется, проблема ...

Разница заключается в том, что зависимости Acme не в mavenCentral(), но только в mavenRepo("D:/maven-repo"). Поэтому я подумал: «Может быть, он не собирает его с локального диска тогда ...» и изменил версию на какое-то смешное (1.999-SNAPSHOT) значение, которое не существует в файле BuildConfig.groovy. Когда снова работает grails compile, команда тайм-аут, заявив, что версия не может быть найдено:

UNRESOLVED DEPENDENCIES 
D:/maven-repo: unable to get resource for com/acme#acme-adapter-api;1.999-SNAPSHOT 

Так, очевидно, локальная зависимость становится решена, но как-то не применяется на следующем этапе, компиляции ...

ответ

0

It оказалось, что проблема была тогда не пустой кеш для артефакта. Хотя файл activemq jar был нетронутым, acme-adapter-api.jar на самом деле был многократно изменен, но без увеличения идентификатора сборки maven 1.3 в приведенном выше случае.

я мог бы исправить это, когда я увеличил номер сборки 1,4-SNAPSHOT ...

Два вопроса остается:

  1. Не контракт с Maven всегда выборки версий съёмки, по той же причине?
  2. Как принудительно очистить кеш? И где это?

Открою новый вопрос ответить часть 2 here

+0

Я просто столкнулся с той же проблемой. Зависимости SNAPSHOT не перезагружаются после первого раза. Это огромная проблема во время разработки. :/Grrr. – Mike

+0

https://github.com/alkemist/grails-snapshot-dependencies-fix для работы –

5

Grails 1.3.6 был обновлен с Иви 2.2 (в котором указывается, что он применяется исправление https://issues.apache.org/jira/browse/IVY-938), и я могу получить обновления версии SNAPSHOT если я укажу «change = true», как в:

dependencies { 
    runtime ('groupId:artifactId:version-SNAPSHOT') { 
    changing = true 
    } 
} 
Смежные вопросы