Maven倉庫搭建(一):一臺HTTP伺服器即可(Tomcat、Apache或Nginx)
作為一個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倉庫搭建原理
在自己專案的pom.xml檔案中加入一個dependency,例如Spring框架的一個包:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId >
<version>4.1.6.RELEASE</version>
</dependency>
如果是自己的或公司內部使用的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>
HTTP伺服器搭建Maven倉庫
有了上面的理論基礎,用HTTP伺服器搭建Maven倉庫就不難了,無非是把所需要的檔案按照以上規則放到對應的目錄下,HTTP伺服器提供下載地址。
首先需要一臺伺服器,再安裝一個HTTP伺服器軟體,如Tomcat、Apache、Nginx等,任選其一即可。
例如使用Java程式設計師喜聞樂見的Tomcat,使用Tomcat的webapps/ROOT
目錄作為Maven倉庫的檔案存放目錄。
jar包部署到倉庫
如果想把自己的jar包部署到倉庫上供自己或別人引用,只有jar檔案是不夠的,裡面上面Spring倉庫的目錄可以看到除了jar,還有pom、md5、sha1等各種檔案,這些檔案都可以通過mvn deploy
命令來生成。
方法一:手動部署
在專案的pom.xml中新增:
<distributionManagement>
<repository>
<id>file-repository</id>
<url>file://D:\abc</url>
</repository>
</distributionManagement>
方法二:SSH自動部署
如果伺服器是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>
Maven倉庫使用
部署完成後,已經可以直接下載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>