初學maven,遇到不少問題,記錄下來,呵呵,依然是備忘兼共享。
一. The pulgin 'org.apache.maven.plugins:maven-archetype-plugin' does not exist or valid version could be found
安裝官方標准的安裝方式(http://maven.apache.org/download.html#Installation)安裝完畢,運行mvn --version沒有問題。
然後按照"maven in 5 minutes"(http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html) 的第一個例子,執行
mvnarchetype:create-DgroupId=com.mycompany.app-DartifactId=my-app
結果報錯:
The pulgin 'org.apache.maven.plugins:maven-archetype-plugin' does not exist or valid version could be found
......
google了一下發現解決方案,原來是網絡配置的問題,如果使用代理上網必須修改maven的配置文件加入相應的代理信息。
打開文件 maven/conf/settings.xml,找到<proxies>,將原來注釋掉的<proxy>打開,修改相應的信息即可。
注意:
1.)<host>iproxy-sh.cn.ao.ericsson.se</host> 這裡不要用"http://"開頭,否則會無法連接
2. ) 如果用戶名、密碼不需要,可以刪除<username><password>,設置為空也行。
二. artifactory私服安裝問題
對於單機來說,maven從遠程倉庫取jar包等資源是完全合理的。但是如果一個team甚至一個公司,每個人的maven都從遠程倉庫取,那麼花在文件下載上的時間就太多了,而且完全沒有必要。因此設置一個開發團隊共享的Maven2的私服就必不可少了。
Maven2的私服,當然首選artifactory。
跑到artifactory的官網,down下來最新的1.30-beta1,安裝非常簡單,windows下一個bat文件直接啟動。之後修改maven配置,加入
<repositories>
<repository>
<id>central</id>
<url>http://localhost:8081/artifactory/repo</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>snapshots</id>
<url>http://localhost:8081/artifactory/repo</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://localhost:8081/artifactory/plugins-releases</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>snapshots</id>
<url>http://localhost:8081/artifactory/plugins-snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
但是發現執行maven命令時,maven完全沒有從私服上取文件,還是到默認的maven官網去取了。反復修改都不行,最後發現問題可能出現在artifactory上:登錄artifactory的控制台後,點Virtual Repositories --》 repo 後直接報錯,頁面拋ArrayIndexOutOfBoundsException!看url是http://localhost:8081/artifactory/repo/,這個不就是上面配置的地址嗎?都拋異常了,讓maven怎麼取文件,找到問題了,雖然莫名其妙,試著刪除後重新安裝還是這個錯誤。暈倒,不清楚哪裡出的問題,更不知該怎麼改。看看版本是beta1,而且下載數量只有幾十,想想可能是新版本的bug。
換成1.2.5final,一切都正常了。
我想應該是artifactory 1.3.0-beta1的bug吧。
三.maven的路徑變量M2_REPO
使用mvn eclipse:eclipse命令生成eclipse project後,在eclipse中impot進來,編譯出錯,原來是maven使用到一個名為“M2_REPO”的路徑變量。
google了一下,eclipse中設置變量M2_REPO的方式是:
Window -> Preferences -> Java -> Build Path -> Classpath Variables,NewName 填寫"M2_REPO",路徑為你的本地的maven類庫地址.
設置後重新編譯順利通過,這樣導入eclipse項目就完成了。