Grails和本地Maven依赖

时间:2009-12-08 13:43:31

标签: grails build dependencies compilation grails-maven

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

我想从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时,我没有幸运,因为它抱怨它无法解析com.acme组中的类。

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

区别在于acme依赖关系不在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

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

事实证明,该工件的问题是非空缓存。虽然activemq jar文件没有被触及,但acme-adapter-api.jar实际上已多次更改,但在上述情况下没有增加maven build id 1.3。

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

还有两个问题:

  1. 总是获取SNAPSHOT版本的maven合约是否完全相同?
  2. 如何强行清空缓存?它在哪里?
  3. 我将打开一个新问题来回答第2部分here