2009-12-08 234 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 
    } 
}