Grails战中的Groovy旧版本

出于某种原因,'grails war'在“WEB-INF / lib”中包含'groovy-1.6.9.jar'和'groovy-all-1.7.8.jar'文件。我正在使用Grails 1.3.7,当我在Tomcat中部署此战争时,我收到以下错误:   org.springframework.beans.factory.BeanCreationException:   使用名称创建bean时出错   'pluginManager'定义于   ServletContext资源   [/WEB-INF/applicationContext.xml的]:   调用init方法失败;   嵌套异常是   java.lang.NoSuchMethodError:   org.codehaus.groovy.control.SourceUnit.getSource()Lorg / Codehaus的/常规/控制/ IO / ReaderSource; 我能够部署战争的唯一方法是删除旧的groovy文件,应用程序运行正常。 我调试了依赖进程,我能找到的就是:
[NOT REQUIRED] org.codehaus.groovy#groovy;1.6.9!groovy.jar
...
:: evicted modules:
junit#junit;3.8.2 by [junit#junit;4.8.1] in [test]
          in org.codehaus.groovy#groovy;1.6.9 with latest-revision
所以,我继续并获得文件'org.codehaus.groovy.modules.http-builder / http-builder / ivy-0.5.0-RC2.xml',其中包含以下内容:
<dependency org="org.codehaus.groovy" name="groovy" rev="[1.5,1.6.99)"
我将这一行更改为“[1.7,1.7.8]”并且依赖过程工作正常,现在战争部署没有任何问题,但我以前从未接触过任何这一行,我很担心。这是继续使用Grails依赖项的正确方法吗? 所有这一切都在安装JQuery UI插件后开始发生,即使在删除之后,问题仍然存在。 谢谢     
已邀请:
看起来您在BuildConfig.groovy中的依赖项块中有http-builder。 http-builder将groovy作为传递依赖。您需要将其排除以避免与Grails一起提供的groovy冲突。
compile("org.codehaus.groovy.modules.http-builder:http-builder:0.5.0") {
    excludes 'groovy', 'xml-apis'
}
(注意:以上示例也排除了xml-apis,如果您使用的是Java 6,则可能需要这样做,以避免重复的类) 要跟踪此类冲突,您可以使用以下命令:
grails dependency-report
在target / dependency-report /下生成报告     

要回复问题请先登录注册