我是Grails的新手,我想问一个人如何替换Grails项目中的依赖项(使用GGTS / Spring Tool Suite / Eclipse)?
基本上,我问这个问题是因为尝试在Grails项目内的Grails中使用Vaadin插件处理grails时遇到的问题(这是GitHub上的问题-> https://github.com/ondrej-kvasnovsky/grails-vaadin-plugin/issues/48)
我有以下grails插件,该插件使用hibernate依赖项的5.1.1.Final
版本(它从我的本地.m2 Maven存储库中获取,位于grails dependency-report
的摘要下方)。
休眠:
+--- org.grails.plugins:hibernate4:4.3.6.1
| \--- org.hibernate:hibernate-validator:5.1.1.Final
此外,我还使用vaadin plugin for grails:
用于Grails的Vaadin插件:
org.grails.plugins:vaadin:7.3.9
| \--- com.vaadin:vaadin-client:7.3.9
| \--- com.vaadin:vaadin-shared:7.3.9
| \--- com.vaadin.external.flute:flute:1.3.0.gg2
| \--- com.vaadin.external.streamhtmlparser:streamhtmlparser-jsilver:0.0.10.vaadin1
| \--- com.vaadin.external.google:guava:16.0.1.vaadin1
| \--- com.vaadin.external.json:json:0.0.20080701
| \--- org.w3c.css:sac:1.3
| \--- javax.validation:validation-api:1.0.0.GA
| \--- javax.validation:validation-api:1.0.0.GA
这里是
BuildConfig.groovy
文件中的插件条目:plugins {
...
// this is the line I added
compile ":vaadin:7.3.9"
...
// This line is created automatically by the new project wizard
runtime ":hibernate4:4.3.6.1" // or ":hibernate:3.6.10.18"
}
如您所见,Vaadin插件使用
javax.validation:validation-api:1.0.0.GA
,但是grails默认使用的Hibernate版本是最新的(5.1.1.Final)版本,而该版本又与javax.validation:validation-api:1.0.0.GA
不兼容。相反,应该降级到hibernate-validator的4.x.x版本或将javax.validation库从validation-api:1.0.0.GA
升级到validation-api:1.1.0.Final
。我发现我可以切换Hibernate grails插件的版本(如在BuildConfig.groovy中建议的那样):
plugins {
...
// this is the line I added
compile ":vaadin:7.3.9"
...
runtime ":hibernate:3.6.10.18" // instead of default ":hibernate4:4.3.6.1"
}
这将有效地安装使用
Hibernate 3 for Grails
而不是hibernate-validator-4.1.0.Final
的5.1.1.Final
,因此它应与javax.validation 1.0.0兼容,但仍然出现错误,我在此问题的开头在GitHub上打开了该问题。现在,当Hibernate 3 for Grails使用
4.1.0.Final
时,我只能认为可以尝试使用hibernate-validator-4.3.1.Final
(我已经下载了.jar)来查看会发生什么,或者以某种方式替换Vaadin Grails插件安装的validation-api:1.0.0.GA
,然后再次使用Hibernate 5.1.1。最后。但是,如何安全地替换这些依赖关系而又不破坏任何内容?
或者,甚至更好的是,有人使用Grails的Vaadin插件遇到了同样的问题,您是否提供了更好的解决方案?
感谢您的关注。希望彻底解决这个琐碎的问题。
最佳答案
感谢用户对GitHub上同一问题的评论:
https://github.com/ondrej-kvasnovsky/grails-vaadin-plugin/issues/48#issuecomment-77685018
我通过将runtime ":hibernate4:4.3.6.1"
替换为较旧的版本runtime ":hibernate4:4.3.5.5"
来解决,它可以工作。
关于grails - 如何在用GGTS/Eclipse创建的Grails项目中替换依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28913972/