【问题标题】:What's the proper way to upgrade a single grails project lib jar file?升级单个 grails 项目 lib jar 文件的正确方法是什么?
【发布时间】:2011-08-31 16:41:23
【问题描述】:

具体来说,我想升级到更新版本的 httpcore jar(我有 httpcore-4.0.1.jar 并且需要包含 org.apache.http.entity.mime 包的更新版本)而不升级整个grails 项目。

从我目前发现的情况来看,最佳实践似乎指向在 BuildConfig.groovy 的依赖项部分下做一些事情,但我还没有找到任何文档来解释我应该如何格式化依赖项声明(或甚至确认这将是正确的地方)。它似乎是我更熟悉的 Rails 项目的 Gemfile 最接近的东西,这就是为什么我目前正在寻找处理这个问题的地方。如果还有其他更好的地方来定义它,请告诉我。

我发现了一些建议,即 .jar 文件可以简单地复制到 lib 文件夹中并被拾取,但我担心如果我这样做,默认库的 .jar 文件可能会被覆盖和/或无法正确注册就这样吧。

【问题讨论】:

  • 对不起,我对你的问题感到困惑。您是否在问如何将特定 jar 的特定版本拉入您的 Grails 项目?或者您是在问如何将特定 jar 的特定版本作为另一个 jar 的依赖项引入?

标签: grails


【解决方案1】:

如果我理解正确,httpcore 是 Grails 本身的依赖项,您想升级版本,而不更改 Grails 本身的版本?您可以通过将以下内容添加到 BuildConfig.groovy

来做到这一点
grails.project.dependency.resolution = {
    // inherit Grails' default dependencies
    inherits("global") {
        // exclude the version of httpcore provided by Grails
        excludes 'httpcore'
    }

    dependencies { 
        // Use version 4.1.3 of the library instead
        compile 'org.apache.httpcomponents:httpcore:4.1.3'
    }
}

【讨论】:

  • 原来我需要升级的不是httpcore,而是我需要添加的httpmime,但这绝对让我朝着正确的方向前进,所以谢谢。
  • 我无法理解的一件事是 'org.apache.httpcomponents:httpcore:4.1.3' 行如何映射到任何东西。我可以将“httpcore”和“4.1.3”映射到 jar 文件名和版本,但是没有带有“org.apache.httpcomponents”的实际包。事实证明,它映射到 search.maven.org 上的 groupId,如果我在 BuildConfig.groovy 文件中取消注释 mavenLocal() 和 mavenCentral(),它会自动将它们添加到我的项目中。
  • 请注意,我认为那些 .jar 文件已自动添加到 /lib 目录是错误的。它们是手动添加的。以这种方式指定库似乎不需要任何副本位于 /lib 目录中。
  • @David 如果您在 BuildConfig.groovy 中指定依赖项,它们将从 Maven/Ivy 存储库下载并添加到项目中。如果将 JAR 复制到 lib 中,您也将它们添加到项目中,但会绕过整个依赖解析机制
猜你喜欢
  • 1970-01-01
  • 2019-05-29
  • 2013-09-24
  • 2018-09-05
  • 2023-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多