如何让Grails从Maven存储库获取最新的本地罐子?

时间:2013-05-13 11:19:07

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

  1. 在我的Maven回购(.m2)中。有一个我的本地jar,如sub_app-0.1.jar。
  2. 我在ivy-cache中有相同的副本。
  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甚至。同样的结果,第一次是在它之后,而不是。
  8. 即。 Grails只考虑常春藤缓存中的jar名称和版本,如果有 - 它不需要。如果没有 - 它取自.m2。

    但它不考虑新旧构建。

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

3 个答案:

答案 0 :(得分:0)

已更新

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

中所述
compile ('YOUR_GROUP_ID:YOUR_SUB_AP:0.1') {
    changing = true
}

答案 1 :(得分:0)

不确定这是否与您的问题相同,但我使用Spring Source Tool Suite(STS)和#39; grails'项目依赖于'接口' project(只包含接口,bean,pojos等)。

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

如果我在我的' grails'在STS项目中,Grails正确识别接口jar的变化(我在BuildConfig.groovy中有{changing = true}),下载pom,但无法下载jar,因为它无法从常春藤缓存中删除jar。看起来STS在ivy-cache上有一个句柄可以阻止它。

当我从另一位开发人员那里继承这个项目时,他告诉我这是Grails和/或STS的一个错误/特征,我通过以下方式对他的知识和解决方法感到鞠躬:

  1. maven包而不是安装在'接口'然后将最新的jar复制到ivy-cache。似乎STS会让我替换jar的内容。然后grails clean使用来自ivy-cache的最新jar(不尝试从maven下载)。
  2. maven install on' interfaces',关闭STS,从常春藤缓存中删除jar,重新打开STS,grails clean从maven下载最新的jar。
  3. 这两种解决方法都很痛苦,所以如果有人有任何想法,我会感兴趣吗?

答案 2 :(得分:0)

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

解决方案:

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

4 Configuration - Reference Documentation

请阅读:

  

4.7.6快照和其他更改依赖关系