Grails的核心依赖必须保证项目中版本一致!

Sat 15 October 2011
  • 手艺 tags:
  • Grails
  • maven published: true comments: true

好久没写语录式大标题了,实在是今天玩Grails受害很深很深。

Grails因为本身是通过ivy来管理依赖的,虽然后续的版本和maven的集成不断加深,但是本身还是通过ivy来解析pom.xml。也就是说最后的活还是ivy干的。如果你的项目比较大,选择了通过maven来管理项目,而你的依赖中又牵扯了很多其他的依赖,那么你危险了。

:: UNRESOLVED DEPENDENCIES ::

:: log4j#log4j;1.2.16: configuration not found in log4j#log4j;1.2.16: 'master'. It was required from ...;1.7.0 runtime

对maven用户这是一条多么发指的报错!(比如这个

它的原因其实是你的dependency中有!=1.2.16版本你的log4j,比如1.2.12,即使你在pom里将它添加到了exclusion中也没有用,必须要保持版本的一致!至于你用什么办法让他们保持一致,还是干脆放弃用maven管理你的grails项目:It's up to you.

同样的问题还出现在其他核心依赖上,例如commons-pool。