轉(zhuǎn)載自:http://blog.csdn.net/xiao__gui/article/details/52625660
作為一個(gè)java老程序員,多多少少都會有一些自己寫的各種常用代碼,如果每寫一個(gè)項(xiàng)目都把這些代碼拷貝一份到新項(xiàng)目比較麻煩的,打成jar包引入到項(xiàng)目會方便很多。如果想讓這些jar包能通過Maven引入進(jìn)項(xiàng)目,那就需要搭建Maven倉庫。
說到Maven倉庫搭建,很多人第一想到的一般都是Nexus。Nexus的確是非常好的方案,但是總歸需要一臺服務(wù)器,一臺服務(wù)器需要花錢買和花時(shí)間維護(hù),成本比較大。Nexus一般是公司用的比較多,個(gè)人不建議使用。
實(shí)際上除了Nexus外,還有很多Maven倉庫的搭建方案。例如可以將Maven倉庫搭建在GitHub等代碼托管平臺上,免費(fèi)。甚至也可以搭建在七牛云、又拍云、阿里云對象存儲OSS、騰訊云對象存儲服務(wù)COS等云存儲上,加上CDN可以有很快的下載速度,雖然云存儲是收費(fèi)的,但是一般都有免費(fèi)額度,例如一個(gè)月10G流量,通常來說已經(jīng)很夠用了。
本篇博文主要內(nèi)容是使用HTTP服務(wù)器搭建Maven倉庫,用于學(xué)習(xí)Maven倉庫搭建原理,并不是想替代Nexus。在本系列接下來的博文中會講到如何用代碼托管平臺(如GitHub)、云存儲平臺(如七牛、阿里云OSS)來搭建Maven倉庫。
首先,Maven有個(gè)中央倉庫:http://repo.maven.apache.org/maven2/,里面包含很多常用的開源項(xiàng)目的包。
在自己項(xiàng)目的pom.xml文件中加入一個(gè)dependency,例如sPRing框架的一個(gè)包:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.1.6.RELEASE</version></dependency>Maven會將倉庫地址、groupId、artifactId、version四個(gè)部分拼接起來,得到最終的jar包下載地址: http://repo.maven.apache.org/maven2/org/springframework/spring-core/4.1.6.RELEASE/spring-core-4.1.6.RELEASE.jar
當(dāng)然,除了jar包外還有一些其他需要的文件,具體可以查看目錄: http://repo.maven.apache.org/maven2/org/springframework/spring-core/4.1.6.RELEASE/
如果是自己的或公司內(nèi)部使用的jar包,在中央倉庫肯定是沒有的,這就需要配置一個(gè)自己的repository,指定包的下載地址。
<repository> <id>my-repository</id> <url>http://115.159.216.216:8080/</url></repository>...<dependency> <groupId>com.xxg.cloudstorage</groupId> <artifactId>cloudstorage</artifactId> <version>1.0.0</version></dependency>同理,此時(shí)Maven會根據(jù)repository配置的url生成文件下載地址: http://115.159.216.216:8080/com/xxg/cloudstorage/cloudstorage/1.0.0/cloudstorage-1.0.0.jar
有了上面的理論基礎(chǔ),用HTTP服務(wù)器搭建Maven倉庫就不難了,無非是把所需要的文件按照以上規(guī)則放到對應(yīng)的目錄下,HTTP服務(wù)器提供下載地址。
首先需要一臺服務(wù)器,再安裝一個(gè)HTTP服務(wù)器軟件,如Tomcat、Apache、Nginx等,任選其一即可。
例如使用Java程序員喜聞樂見的Tomcat,使用Tomcat的webapps/ROOT目錄作為Maven倉庫的文件存放目錄。
如果想把自己的jar包部署到倉庫上供自己或別人引用,只有jar文件是不夠的,里面上面Spring倉庫的目錄可以看到除了jar,還有pom、md5、sha1等各種文件,這些文件都可以通過mvn deploy命令來生成。
在項(xiàng)目的pom.xml中添加:
<distributionManagement> <repository> <id>file-repository</id> <url>file://D:/abc</url> </repository></distributionManagement>運(yùn)行mvn deploy命令可以看到在D:/abc目錄下生成了目錄和各種文件。將整個(gè)目錄上傳到Tomcat的webapps/ROOT,此時(shí)在瀏覽器上訪問以下地址即可通過HTTP直接下載jar包: http://115.159.216.216:8080/com/xxg/cloudstorage/cloudstorage/1.0.0/cloudstorage-1.0.0.jar
如果服務(wù)器是linux服務(wù)器,還可以直接通過mvn deploy通過scp方式將整個(gè)目錄直接傳到服務(wù)器的Tomcat的webapps/ROOT目錄下,省去手動上傳文件的步驟。
pom.xml配置服務(wù)器地址和文件路徑:
<distributionManagement> <repository> <id>my-server</id> <url>scp://115.159.216.216/home/Ubuntu/coder/apache-tomcat-8.5.5/webapps/ROOT</url> </repository></distributionManagement><build> <extensions> <extension> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-ssh</artifactId> <version>2.10</version> </extension> </extensions></build>在Maven的settings.xml中配置服務(wù)器的SSH用戶名和密碼:
<server> <id>my-server</id> <username>root</username> <passWord>your-password</password></server>部署完成后,已經(jīng)可以直接下載jar包,那么就可以在其他項(xiàng)目中通過dependency加入這個(gè)包的依賴了。
<repository> <id>my-repository</id> <url>http://115.159.216.216:8080/</url></repository>...<dependency> <groupId>com.xxg.cloudstorage</groupId> <artifactId>cloudstorage</artifactId> <version>1.0.0</version></dependency>新聞熱點(diǎn)
疑難解答