如何让Grails从Maven存储库中获取最新的本地jar


  1. 在我的Maven repo(.m2(中,有一个我的本地jar,类似于sub_app-0.1jar
  2. 我在常春藤的储藏室里也有同样的副本
  3. 我在sub_app上运行maven install,然后创建新的sub_app-0.1.jar文件
  4. 之后,我运行grails clean,它不会从.m2获得我的新sub_app-0.1.jar
  5. 但是,如果我从ivy缓存中删除(删除(sub_app-0.1.jar文件并运行grails clean,那么它将把新的sub_app-0.1.jar文件放入ivy缓存。

  6. 如果我在子应用程序pom和grails中更改版本,那么pom和grails将采用最新的版本。重新安装它不需要。

  7. 我甚至尝试将SNAPSHOT添加到sup-app-jar中。同样的结果,第一次是采取,之后不是

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

但它没有考虑新/旧建筑。

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

更新

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

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

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

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

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

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

  1. maven包而不是安装在"接口"上,然后将最新的jar复制到ivy缓存中。看来STS会让我更换罐子里的东西。然后grails clean使用ivy缓存中的最新jar(没有尝试从maven下载(
  2. maven在"接口"上安装,关闭STS,从ivy缓存中删除jar,重新打开STS,grails clean从maven下载最新的jar

两种变通方法都很痛苦,所以如果有人有什么想法,我会感兴趣吗?

Grails不支持获取相同(组id、工件id、版本(jar的最新版本,甚至SNAPSHOT jar也不支持。

解决方案:

  1. 每次从ivy缓存中删除sub-app-version.jar。或
  2. 每次,都要将pom.xml中的sub-app-jar的版本更改为下一个值(应该大于当前值(

4配置-参考文件

请阅读:

4.7.6快照和其他不断变化的相关性

相关内容

  • 没有找到相关文章

最新更新