- 在我的Maven repo(.m2(中,有一个我的本地jar,类似于sub_app-0.1jar
- 我在常春藤的储藏室里也有同样的副本
- 我在sub_app上运行
maven install
,然后创建新的sub_app-0.1.jar文件 - 之后,我运行
grails clean
,它不会从.m2获得我的新sub_app-0.1.jar -
但是,如果我从ivy缓存中删除(删除(sub_app-0.1.jar文件并运行
grails clean
,那么它将把新的sub_app-0.1.jar文件放入ivy缓存。 -
如果我在子应用程序pom和grails中更改版本,那么pom和grails将采用最新的版本。重新安装它不需要。
- 我甚至尝试将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的一个错误/功能,我向他的知识低头,并通过以下方式解决了这个问题:
- maven包而不是安装在"接口"上,然后将最新的jar复制到ivy缓存中。看来STS会让我更换罐子里的东西。然后grails clean使用ivy缓存中的最新jar(没有尝试从maven下载(
- maven在"接口"上安装,关闭STS,从ivy缓存中删除jar,重新打开STS,grails clean从maven下载最新的jar
两种变通方法都很痛苦,所以如果有人有什么想法,我会感兴趣吗?
Grails不支持获取相同(组id、工件id、版本(jar的最新版本,甚至SNAPSHOT jar也不支持。
解决方案:
- 每次从ivy缓存中删除sub-app-version.jar。或
- 每次,都要将pom.xml中的sub-app-jar的版本更改为下一个值(应该大于当前值(
4配置-参考文件
请阅读:
4.7.6快照和其他不断变化的相关性