Grails 依赖解析

发布于 2024-10-17 15:02:17 字数 1051 浏览 2 评论 0原文

我的 Grails 项目依赖于使用 Maven 构建的内部库 Commons.jar。在 BuildConfig.groovy 中,我将其配置为首先在本地 Maven 存储库中查找此依赖项,然后在公司范围的存储库中查找。

repositories {        
    // Read the location of the local Maven repository from $M2_REPO
    mavenLocal System.getenv("M2_REPO")        
    mavenRepo "http://build.mycompany.com/wtp_repository"
}

plugins {
    build 'org.grails.plugins:spring-security-core:1.0.1'
}

dependencies {
    compile ('com.mycompany:Commons:1.0.0-SNAPSHOT')
}

当我构建Common/jar(使用mvn部署)时,它首先存储在mavenLocal中,然后复制到mavenRepo。但是,当我构建 Grails 应用程序时,它会在以下位置查找 JAR:

  • ivy 缓存(默认为 ~/.ivy2/cache)
  • mavenLocal(由 $M2_REPO 定义)
  • mavenRepo (http://build.mycompany.com/ wtp_repository)

因此,Grails 应用程序不断地从 Ivy 缓存中获取旧版本的 JAR,而在构建 Commons 项目时,该旧版本的 JAR 永远不会更新。

我想我可以解决这个问题,如果我知道如何:

  • 阻止 Grails 在 Ivy 缓存中查找依赖项(尽管我猜禁用缓存可能会大大减慢我的构建速度)
  • 确保在构建 Commons 时也更新 Ivy 缓存

但是,似乎其他引用 Maven 项目的 SNAPSHOT 工件的人也应该有这个问题,所以也许我遗漏了一些东西?

谢谢!

My Grails project depends on an intenal library Commons.jar which is built with Maven. In BuildConfig.groovy I have configured it to look for this dependency first in the local Maven repository, then in the company-wide repository.

repositories {        
    // Read the location of the local Maven repository from $M2_REPO
    mavenLocal System.getenv("M2_REPO")        
    mavenRepo "http://build.mycompany.com/wtp_repository"
}

plugins {
    build 'org.grails.plugins:spring-security-core:1.0.1'
}

dependencies {
    compile ('com.mycompany:Commons:1.0.0-SNAPSHOT')
}

When I build Common/jar (using mvn deploy), it is stored first in mavenLocal, then copied to mavenRepo. However, when I build the Grails app, it looks for the JAR in the following locations:

  • Ivy cache (defaults to ~/.ivy2/cache)
  • mavenLocal (defined by $M2_REPO)
  • mavenRepo (http://build.mycompany.com/wtp_repository)

So the Grails app is constantly picking up an old version of the JAR from the Ivy cache, which is never updated when the Commons project is built.

I guess I could fix this problem if I knew how to:

  • Prevent Grails for looking for dependencies in the Ivy cache (though I guess disabling the cache might slow down my builds considerably)
  • Ensure that the Ivy cache is also updated when I build Commons

However, it seems that anyone else that references SNAPSHOT artifacts of Maven projects should also have this problem, so perhaps I'm missing something?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

盗梦空间 2024-10-24 15:02:17

我猜这个讨论 与您遇到的问题有关,并可能建议一些解决方法/解决方案。

I guess this discussion is related to the problem you have and possibly suggests some workaround/solution.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文