【问题标题】:How to replace a dependency in a Grails project created with the GGTS/Eclipse?如何替换使用 GGTS/Eclipse 创建的 Grails 项目中的依赖项?
【发布时间】:2015-05-08 22:54:25
【问题描述】:

我是 Grails 新手,我想问一下如何替换 Grails 项目中的依赖项(使用 GGTS/Spring Tool Suite/Eclipse)?

基本上,我之所以问这个问题是因为我在尝试在 Grails 项目中使用 Vaadin 插件时遇到了这个问题(这是 GitHub 上的问题 -> https://github.com/ondrej-kvasnovsky/grails-vaadin-plugin/issues/48

我有以下 grails 插件,它使用 5.1.1.Final 版本的 hibernate 依赖项(它从我的本地 .m2 Maven 存储库中获取,低于来自 grails dependency-report 的 sn-p)。

休眠:

+--- 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上打开问题链接的错误这个问题的开始。

现在,由于 Grails 的 Hibernate 3 使用 4.1.0.Final,我只能认为我可以尝试使用 hibernate-validator-4.3.1.Final(我已经下载了 .jar)来看看会发生什么,或者以某种方式替换使用 Vaadin Grails 插件安装的 validation-api:1.0.0.GA并使用 Hibernate 5.1.1.Final 重试。

但是我怎样才能在不破坏任何东西的情况下安全地替换这些依赖项呢? 或者,更好的是,有人在 Grails 的 Vaadin 插件中遇到了同样的问题,您是否提供了更好的解决方案?

感谢您的关注。希望一劳永逸地解决这个小问题。

【问题讨论】:

    标签: grails vaadin dependency-management vaadin7 hibernate-validator


    【解决方案1】:

    感谢用户在 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" 解决了这个问题,它可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      相关资源
      最近更新 更多