8

我正在使用 Grails 2.1.1 和 Maven 3.0.3。

在我的 buildConfig.groovy 中,我有pom true并且我通过grails create-pom. 在这个 pom 中,我有一个依赖项,<version>1.0-SNAPSHOT</version>它只存在于我的本地 maven 存储库中。我可以mvn clean compile在这个 pom 上成功运行。

但是,运行grails refresh-dependencies不会从我的本地 Maven 存储库下载我的快照依赖项的最新版本。我可以让它下载最新版本的唯一方法是从常春藤缓存中手动删除它。

根据文档

所有版本号以 -SNAPSHOT 结尾的依赖项(jar 和插件)都被 Grails 隐式视为正在更改。

我假设它会识别我的快照文件正在更改并在修改时下载它。我是否缺少其他一些配置步骤?我只想使用 maven 进行依赖管理,但这完全是使用 Maven 和 Grails 的错误方式吗?

4

2 回答 2

8

这实际上是 Aether 解析器的正常行为。

--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/

于 2014-12-18T22:12:12.817 回答
0

由于我没有得到任何回复,似乎解决方案是不使用 grails 命令行,而是使用 Grails 的 maven 目标。

mvn grails:run-app成功了。所有快照依赖项都已刷新,我可以启动我的应用程序并查看反映的本地更改。这样我就完全忽略了常春藤,让 maven 处理一切。

编辑:如果你走这条路,我建议按照关于Maven 集成的用户指南的第 5 章来设置你的 pom.xml 等。我能够遵循这个并毫无意外地进行设置。

于 2012-11-10T14:24:22.830 回答