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