【问题标题】:How to make Grails get latest local jars from Maven repository?如何让 Grails 从 Maven 存储库中获取最新的本地 jars?
【发布时间】:2013-05-07 09:54:53
【问题描述】:
  1. 在我的 Maven 存储库 (.m2) 中。有一个我的本地 jar,例如 sub_app-0.1.jar。
  2. 我在常春藤缓存中有相同的副本。
  3. 我在 sub_app 上运行 maven install,然后创建了新的 sub_app-0.1.jar 文件。
  4. 之后,我运行 grails clean 并没有从 .m2 获取我的新 sub_app-0.1.jar。
  5. 但是,如果我从 ivy-cache 中删除(删除)sub_app-0.1.jar 文件并运行grails clean,那么它会将新的 sub_app-0.1.jar 文件放入 ivy-cache 中。

  6. 如果我在子应用 pom 和 grails pom 中更改版本,并且 Grails 正在使用最新版本。再次安装它不会占用。

  7. 我什至尝试将 SNAPSHOT 添加到 sup-app jar 中。同样的结果,第一次服用,后来没有。

即。 Grails 只考虑 ivy-cache 中的 jar 名称和版本,如果有的话 - 它不需要。如果没有 - 它取自 .m2。

但它没有考虑新/旧版本。

如何在第 4 步中也获得相同的行为(第 5 步)?

【问题讨论】:

    标签: grails grails-plugin grails-2.0 grails-maven


    【解决方案1】:

    更新

    您可以尝试在 BuildConfig.groovy 中将 changeing=true 添加到您的依赖项中,如 Grails Guide

    中指定的那样
    compile ('YOUR_GROUP_ID:YOUR_SUB_AP:0.1') {
        changing = true
    }
    

    【讨论】:

    • 很抱歉,“useOrigin true”不起作用。你能不能给我建议任何其他方式。
    • 我也用过-SNAPSHOT,甚至没有解决,请任何人帮助我
    【解决方案2】:

    不确定这是否与您的问题相同,但我使用 Spring Source Tool Suite (STS) 和“grails”项目,该项目依赖于“interfaces”项目(仅包含接口、bean、pojos 等) )。

    如果我在 STS 的接口上运行 maven 安装,那么 maven 会正确更新最新的 jar(我使用“-1.0-SNAPSHOT”作为我的版本号)。

    如果我随后在 STS 中的“grails”项目上运行 grails clean,Grails 会正确识别接口 jar 的更改(我在 BuildConfig.groovy 中有 {changeing=true}),下载 pom,但无法下载jar,因为它无法从常春藤缓存中删除 jar。看起来 STS 在 ivy-cache 上有一个句柄,可以防止这种情况发生。

    由于我从另一位开发人员那里继承了这个项目,他们告诉我这是 Grails 和/或 STS 的错误/功能,我向他的知识低头并通过以下任一方式解决此问题:

    1. maven 包而不是安装在“接口”上,然后将最新的 jar 复制到 ivy-cache。看来 STS 会让我替换 jar 的内容。然后 grails clean 使用来自 ivy-cache 的最新 jar(不尝试从 maven 下载)。
    2. maven 在“interfaces”上安装,关闭 STS,从 ivy-cache 中删除 jar,重新打开 STS,grails clean 从 maven 下载最新的 jar。

    这两种解决方法都很痛苦,所以如果有人有任何想法,我会很感兴趣?

    【讨论】:

    • 哦,我正在使用 grails v2.0.1 和 sts v2.9.1.RELEASE,如果有帮助的话。
    • 我正在使用 Grails 2.1.4 和 Groovy 2.0.4 和 java 1.7,我觉得这不是一个好主意 - 每次都从 ivy-cache 中删除。
    【解决方案3】:

    Grails 不支持获取最新的相同 (group-id, artifact-id, version) jar 甚至 SNAPSHOT jar。

    解决方案:

    1. 每次从 ivy-cache 中删除 sub-app-version.jar。或
    2. 每次在 pom.xml 中将子应用 jar 的版本更改为下一个值(应该大于当前值)。

    4 Configuration - Reference Documentation

    请阅读:

    4.7.6 快照和其他变化的依赖关系

    【讨论】:

    • 匿名建议编辑 (stackoverflow.com/review/suggested-edits/2495777) 建议:在 Grails 2.3 及更高版本中解决了这个问题, -- 它提供了仅使用 maven 存储库的选项,因此它不会创建 ivy-cache 文件夹至少。
    猜你喜欢
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多