我正在使用Grails 2.1.1和Maven 3.0.3。
在我的buildConfig.groovy中,我有pom true
并且我通过grails create-pom
生成了pom.xml。在这个pom中,我有<version>1.0-SNAPSHOT</version>
的依赖,它只存在于我的本地maven资源库中。我可以在这个pom上成功运行mvn clean compile
。
但是,运行grails refresh-dependencies
不会从我的本地maven存储库下载最新版本的快照依赖项。我可以下载最新版本的唯一方法是从常春藤缓存中手动删除它。
版本号以-SNAPSHOT结尾的所有依赖项(jar和插件)被Grails隐式地视为更改。
我认为它会将我的快照文件识别为更改并在修改时下载它。我错过了其他一些配置步骤吗?我只想使用maven进行依赖管理,但这是否完全错误地将Maven与Grails一起使用?
答案 0 :(得分:8)
这实际上是以太旋转变压器的正常行为。
--refresh-dependencies
不会绕过您的本地maven缓存。为此,您需要将包含依赖关系的maven存储库设置为始终下载新快照。在BuildConfig.groovy的存储库块中:
mavenRepo ("http://my.server/repos/my-grails-plugins") {
updatePolicy 'always'
}
归功于http://asoftwareguy.com/2013/10/25/grails-2-3-maven-dependency-caching-issues/。
答案 1 :(得分:0)
由于我没有得到任何回复,对此的解决方案似乎是不使用grails命令行,而是使用Grails的maven目标。
mvn grails:run-app
可以解决问题。刷新所有快照依赖项,我可以启动我的应用程序并查看反映的本地更改。这样我完全无视常春藤,让maven照顾好一切。
编辑:如果您选择这条路线,我建议您按照Maven Integration上的“用户指南”第5章的说明设置您的pom.xml等。我能够按照此说明进行操作设置没有任何意外。