3

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

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

我像这样设置我的BuildConfig.groovyGrails 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,我并不走运,因为它抱怨它无法解决com.acme小组中的课程。

有趣的是,activemq依赖项似乎不是问题......

mavenCentral()不同之处在于 acme 依赖项不在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

所以很明显,本地依赖得到了解决,但不知何故没有应用于下一步,编译......

4

2 回答 2

5

Grails 1.3.6 已使用 Ivy 2.2 进行了更新(这表明它对https://issues.apache.org/jira/browse/IVY-938进行了修复),如果我指定“更改”,我可以获得 SNAPSHOT 版本的更新= true",如:

dependencies {
  runtime ('groupId:artifactId:version-SNAPSHOT') {
    changing = true
  }
}
于 2011-01-19T18:38:09.253 回答
0

事实证明,问题在于工件的非空缓存。虽然 activemq jar 文件未受影响,但实际上 acme-adapter-api.jar 已多次更改,但在上述情况下并未增加 maven build id 1.3。

当我将内部版本号增加到 1.4-SNAPSHOT 时,我可以修复它......

剩下两个问题:

  1. 出于完全相同的原因,maven 合约不是总是获取 SNAPSHOT 版本吗?
  2. 如何强制清空缓存?它在哪里?

我将在这里打开一个新问题来回答第 2 部分

于 2009-12-08T15:36:20.123 回答