前先后后搞了3天,先是装插件,我发现最近,新下的eclipse3.7在market里装m2e插件老是报missing slf4j.jar的错误,因而我google了找了个m2e离线包,以link的方式安装。接着,各类奇葩的问题便出现了。html
首先在Mac10.7下(mac10.7)导入公司的maven项目后发现老是missing artifact,但我明明把缺乏的包从公司拷过来的说。java
后来通过google baidu,查看了本身eclipse,java的classpath,(Preference -> Java -> Build Path -> Classpath Variables) :app
个人M2_REPO 的值居然是eclipse
/User/current_user/coding/eclipse/Eclipse.app/Contents/MacOS/~/.m2/repositorymaven
也就是说,个人eclipse的m2e插件将个人仓库定位错了,帮我定位到eclipse里了。ui
但个人.m2/settings.xml 和 maven_home/conf/settings.xml里的<localRepository>节点没有写错,确实是写了~/.m2/repository,example就是这么写的。而后我想着索性将~写成/User/current_user/.m2/repository 结果可想而知,M2_REPO变成了google
/User/current_user/coding/eclipse/Eclipse.app/Contents/MacOS/User/current_user/.m2/repositoryspa
奇怪的是,我在osc上提问时,也有个10.7的大神但他却很正常,没发生我这种奇葩状况。。.net
不过今早把问题解决了,若是和我同样用mac也发生这种状况的话,就吧2个settings.xml的<localRepository>节点注释掉吧!不写的话,仓库就默认定位到~/.m2里了,缺点是没法自定义仓库地址了。插件
顺便作个将公司代码带回家遇到问题的总结:
1,最好将maven_home/conf 和 本地仓库的 settings.xml保证同样,由于,至少我遇到了maven2种插件,有的以maven_home/conf 的settings.xml为准,有的以本地仓库的为准。
2,若是公司有本身的maven私服的话,jar包的pom里的地址是指向私服地址的。因此必须吧公司的settings.xml给拷回来,主要是为了配置原来公司私服的profile地址,以避免从公司拷过来的jar包由于没有其源地址而形成eclipse对明明存于仓库的jar包而报missing artifact 的错误。 这种jar包的本地仓库通常会有m2e-lastUpdated.properties 这种文件,以证实此jar包来自私服。。
发现一篇很好的Maven入门文章:
http://www.blogjava.net/jiangshachina/archive/2006/09/01/67080.html