1. 程式人生 > >Maven倉庫搭建(一):一臺HTTP伺服器即可(Tomcat、Apache或Nginx)

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>