grails - 如何在用GGTS/Eclipse创建的Grails项目中替换依赖项?

标签 grails vaadin dependency-management vaadin7 hibernate-validator

我是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.Final5.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/

相关文章:

java - 如何在 Grails 环境中从命令行运行 Groovy 类?

grails - 我如何让 Shiro 的注释在 Grails 中工作?

Tomcat 在不同的机器上表现不同

grails - grails ui插件不适用于grails 2.1.0

java - UI.init() 方法中的 setLocation()

vaadin - Vaadin 表中的延迟加载?

android - 如何为android+gradle设置传递jar依赖

node.js - 任何用于在 Node.js 中可视化模块依赖关系的库?

Xcode 4 : Project does not honor $(inherited) Build Setting in Workspace?

spring - 无法在Grails Hibernate中将数据库状态与 session 错误同步