文章摘自:http://www.blogjava.net/fancydeepin/archive/2012/06/12/380605.html
http://www.blogjava.net/fancydeepin/archive/2012/06/12/380605.html
Maven 確確實實是個好東西,用來管理項目顯得很方便,但是如果是通過 Maven 來遠程下載 JAR 包的話,我宿舍的帶寬是4兆的,
4個人共用,有時候用 Maven 來遠程下載 JAR 包會顯得很慢,一般我發現下載速度不明顯的時候,我就 Ctrl + C 來終止它的下載。
然后改用手動來下載,因為用迅雷一類的工具來下載會快很多。我機子上 Maven 的本地倉庫的很多 JAR 包我都是手動下載的。
手動下載的話就會帶來一個問題,就是,怎么樣手動將下載下來的 JAR 包添加到 Maven 的本地倉庫。關於這個,網上也有很多資料。
我說下我的做法。
首先,
推薦幾個好的 Maven 常用倉庫網址:
http://mvnrepository.com/
http://search.maven.org/
http://repository.sonatype.org/content/groups/public/
http://people.apache.org/repo/m2-snapshot-repository/
http://people.apache.org/repo/m2-incubating-repository/
第一個是我最常用的,然后是第二個,然后是第三個,最后兩個是 Apache 的私有倉庫,我還沒用過,不過感覺應該還可以吧...
接下來,還是一貫的作風,使用截圖通俗易懂的方式來解說:
如果你看過我的上一篇: Spring郵件服務之Html:Maven + Spring SMTP Mail With Html 文章,里面需要用到一個
spring-context-support-3.1.0.RELEASE.jar 的 JAR 包,我把它安裝到本地倉庫的時候把圖截了下來,順便寫了這篇文章,
供有需要的網友參考。
首先,到 http://mvnrepository.com/ 這個網,在搜索欄中輸入你要搜索的 JAR 包的關鍵字來搜索,下面直接貼圖:
@1圖

@2圖

@3圖

以 spring-context-support-3.1.0.RELEASE.jar 為例,在 @3圖中已經給出這個 jar 包的 groupId,artifactId,version信息,
手動安裝的時候這些信息不要改,否則 Maven 項目移植的話,jar 包下載就會失敗。順便把這信息帖下面,方便對照:





Maven 安裝 JAR 包的命令是:

例如:
我下載的這個 jar 包是放到了 D:\mvn 目錄下(D:\mvn\spring-context-support-3.1.0.RELEASE.jar)
那么我在 cmd 中敲入的命令就應該是:
mvn install:install-file -Dfile=D:\mvn\spring-context-support-3.1.0.RELEASE.jar -DgroupId=org.springframework -DartifactId=spring-context-support -Dversion=3.1.0.RELEASE -Dpackaging=jar
回車,顯示安裝成功:

或者
原則上Maven的設計是不需要這么做的,因為pom.xml中依賴的jar包會自動實現從中央倉庫下載到本地倉庫。但是公司設計了一個setting,如果本地倉庫沒有,就去setting指定的url中下載jar包,如果還沒有就報錯。
考慮到setting中url的jar包比較老,如果需要用最新的,則需要將jar包手動下載到本地倉庫。
比如我下載了
lucene-queryparser-4.6.1.jar
怎么添加到本地倉庫呢?
步驟:
1.cmd命令進入該jar包所在路徑
2.執行命令
mvn install:install-file -Dfile=lucene-queryparser-4.6.1.jar -DgroupId=org.apache.lucene -DartifactId=lucene-queryparser -Dversion=4.6.1 -Dpackaging=jar
(不同的jar包相對應替換對應部分)
另外我嘗試了下面的方法,發現不行:
直接寫一個空的pom,里頭包含對所需要jar包的依賴,通過這種方式希望將jar包下載到本地倉庫。但是應用代碼中沒用到,maven命令沒有下載這個jar包到本地倉庫。
補充,-DgroupId和-DartifactId的作用其實是指定了這個jar包的安裝在repository的安裝路徑,只是用來告訴項目去這個路徑下尋找這個名稱的jar包。比如:
mvn install:install-file -Dfile=freemarker-2.3.13.jar -DgroupId=freemarker -DartifactId=freemarker -Dversion=2.3.13 -Dpackaging=jar
就是安裝到了repository\freemarker\freemarker\2.3.13目錄下,如果在dependency的依賴里也這么寫的話,就可以到對應的目錄去尋找。
對於maven中存在classifier的,例如
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.2.0</version>
<classifier>tests</classifier>
</dependency>
就加一個-D參數就可以了,如下:
mvn install:install-file -Dfile=hadoop-hdfs-2.2.0-tests.jar -DgroupId=org.apache.hadoop -DartifactId=hadoop-hdfs -Dversion=2.2.0 -Dclassifier=tests -Dpackaging=jar