Как сделать файл войны с муравьем в заводной? - PullRequest
1 голос
/ 09 февраля 2012

У меня есть следующий скрипт, который предназначен для создания файла войны.

 def ant = new AntBuilder()
 ant.ant(antfile:'build.xml', dir:APP_ROOT, target:'war')

к сожалению, я получаю следующую ошибку, когда groovy пытается запустить ant.ant (... line

Ошибка при выполнении сценария War: [Lorg / codehaus / groovy / runtime / CallSite / CallSite;

 [exec] java.lang.NoClassDefFoundError: [Lorg/codehaus/groovy/runtime/callsite/CallSite;
 [exec]     at java.lang.Class.getDeclaredMethods0(Native Method)
 [exec]     at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
 [exec]     at java.lang.Class.getDeclaredMethods(Class.java:1791)
 [exec]     at org.codehaus.groovy.reflection.CachedClass$1.run(CachedClass.java:134)
 [exec]     at java.security.AccessController.doPrivileged(Native Method)
 [exec]     at org.codehaus.groovy.reflection.CachedClass.getMethods(CachedClass.java:131)

Мне было интересно, есть ли другой способ сделать военный файл с помощью antbuilder в groovy?

1 Ответ

1 голос
/ 16 февраля 2012

Кажется, проблема возникает, если Groovy-зависимость вашего grails отличается от Groovy-версии, установленной в вашей локальной системе.Я мог воспроизвести ту же проблему, когда попытался вызвать grails war для версии Grails, зависящей от Groovy 1.5 с уже установленной Groovy 1.6.(Кстати, Grails-1.0-RC3 зависит от Groovy 1.5.0, а CallSite введен в Groovy-1.6.) Когда вы вызываете grails war, grails компилирует свои скрипты с неверной версией groovy и заполняет кеш скриптов.

Чтобы решить подобные проблемы, я сделал следующее:

  1. Удалил все файлы в папке ~/.grails/YOUR_GRAILS_VERSION/scriptCache/.
  2. Удалите Groovy bin из path или используйте правильную версию groovy в вашем локальном

При каждом вызове Grails будет компилировать скрипты с правильной версией groovy.Надеюсь, это поможет.

...