2009-12-08 91 views
3

我正在Grails中开发一个小型Web前端。它基本上是一个通过JMS连接异步的“超轻量级”客户端应用程序。Grails和本地Maven依赖关系

我有两个依赖项目,我想从一个Maven仓库中提取。它们是activemqacme-adapter-api,这是一个内部依赖项,在远程存储库中不可用。

设置我BuildConfig.groovy的Grails 1.2M4)文件中像这样,为了访问我的依赖关系:

repositories { 
    grailsPlugins() 
    grailsHome() 
    mavenCentral() 
    mavenRepo('D:/maven-repo') 
} dependencies { 
    compile 'org.apache.activemq:apache-activemq:4.1.1' 
    compile 'com.acme:acme-adapter-api:1.3-SNAPSHOT' 
} 

当我运行grails dependency-report,我可以看到关于acme-adapter-api这条线,例如:

acme-adapter-api by com.acme 
108 kB (0 kB downloaded, 108 kB in cache) 

当我尝试运行grails compile,我没有得到幸运的,因为它当时抱怨它无法从解决班3210组。

有趣的是,activemq依赖性似乎并不成为一个问题......

不同的是,极致的依赖不是mavenCentral(),但只有在mavenRepo("D:/maven-repo")。所以我想:“也许它不会从本地磁盘中选择它,然后......”并将版本更改为BuildConfig.groovy文件中不存在的一些有趣(1.999-SNAPSHOT)值。当再次运行grails compile,命令超时,说的版本无法找到:

UNRESOLVED DEPENDENCIES 
D:/maven-repo: unable to get resource for com/acme#acme-adapter-api;1.999-SNAPSHOT 

如此明显的局部依赖得到解决,但不知何故在下一步,编译没有应用...

回答

0

它事实证明问题是非空缓存的工件。尽管activemq jar文件未被触及,但acme-adapter-api.jar实际上已经多次更改,但未增加Maven构建标识1.3,在上述情况下。

我可以修复它,当我增加了内部版本号1.4快照...

两个问题依然存在:

  1. 是不是行家合同总是取快照版本,为完全相同的原因?
  2. 如何强制清空缓存?它在哪里?

我会打开一个新的问题来回答第2部分here

+0

我刚碰到同样的问题。 SNAPSHOT依赖关系在第一次后不会重新加载。这在开发过程中是一个巨大的问题。 :/ Grrr。 – Mike 2010-01-15 16:58:25

+0

https://github.com/alkemist/grails-snapshot-dependencies-fix for work around – 2011-10-07 20:43:04

5

Grails的1.3.6已经与常春藤2.2(这表明它适用于https://issues.apache.org/jira/browse/IVY-938修复)更新的,我可以得到更新快照版本如果我指定“changing = true”,如:

dependencies { 
    runtime ('groupId:artifactId:version-SNAPSHOT') { 
    changing = true 
    } 
}