当前位置: 首页 > 工具软件 > groovy-http > 使用案例 >

Gradle jettyRun 的groovy-all加载冲突问题。

阮疏珂
2023-12-01
困扰很久的问题,在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.使用更加强大的插件
[url]https://plugins.gradle.org/plugin/org.akhikhl.gretty[/url]
[url]http://akhikhl.github.io/gretty-doc/Getting-started.html[/url]
当然这个使用的是新进程启动jetty/tomcat.
功能很强大,可以研究一下。(热部署我用不成功,开发的不完善,非常耗内存,报outofmemory)
 类似资料: