困扰很久的问题,在baidu无法找到解决方案,最近爬墙在google上找到解决方案,希望帮助到遇到这个问题的朋友。(不知道为何gfw要拦截docs.gradle.org 真是宁可错。。不可。。)
最近使用groovy开发web应用,使用gradle build。
官方jetty插件:apply plugin: 'jetty'
然后问题来了, gradle自身使用了2.3.6的groovy-all的模块,而jetty插件确实简单省事,没能新建进程跑jetty,所以和我们的web应用所需要的groovy环境有冲突。
报错:
Caused by: groovy.lang.GroovyRuntimeException: Conflicting module versions. Module [groovy-all is loaded in version 2.3.6 and you are trying to load version 2.2.2
解决方案有2个:
1. 修改build.gradle文件,在classpath里面排除掉groovy-all
[jettyRun,jettyRunWar]*.doFirst {
contextPath = '/'
reload = 'automatic'
scanIntervalSeconds = 5
// 解决jettyRun 加载groovy-all和gradle自带的groovy环境冲突的问题
final FileCollection currentClasspath = classpath
final FileCollection classpathWithoutGroovy = currentClasspath.filter {
File f -> !f.name.contains('groovy-all')
}
classpath = classpathWithoutGroovy
}
2.使用更加强大的插件
https://plugins.gradle.org/plugin/org.akhikhl.gretty
http://akhikhl.github.io/gretty-doc/Getting-started.html
当然这个使用的是新进程启动jetty/tomcat.
功能很强大,可以研究一下。(热部署我用不成功,开发的不完善,非常耗内存,报outofmemory)