如何在groovy中使用ant制作war文件



我有下面的脚本,目的是制作一个war文件。

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

不幸的是,当groovy尝试运行ant.ant(…行)时,我得到了以下错误

执行脚本War:[Log/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)

我想知道有没有其他方法可以在groovy中使用antbuilder制作war文件?

如果grails的groovy依赖项与本地安装的groovo版本不同,那么问题似乎就会出现。当我试图为依赖Groovy1.5的grails版本调用grails war时,我可以重现同样的问题,Groovy1.6已经安装。(顺便说一句,Grails-1.0-RC3依赖于Groovy1.5.0,在Groovy-1.6中引入了CallSite。)当您调用grails war时,Grails会用错误的Groovy版本编译其脚本,并填充脚本缓存。

为了解决这类问题,我所做的是:

  1. 删除了~/.grails/YOUR_GRAILS_VERSION/scriptCache/文件夹中的所有文件
  2. 从路径中删除groovyBin或在中使用正确的Groovy版本您当地的

无论何时调用,Grails都会使用正确的groovy版本编译脚本。我希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新