Maven deploy部署jar包到遠端私倉

wzh0717發表於2019-01-23

Maven deploy部署jar包到遠端私倉

maven deploy介紹

maven中的倉庫分為兩種,snapshot快照倉庫和release釋出倉庫。snapshot快照倉庫用於儲存開發過程中的不穩定版本,release正式倉庫則是用來儲存穩定的發行版本。定義一個元件/模組為快照版本,只需要在pom檔案中在該模組的版本號後加上-SNAPSHOT即可(注意這裡必須是大寫),如下:

<groupId>com.xxx.abc.bbs.bxx</groupId>
<artifactId>TestReporter</artifactId>
<packaging>jar</packaging>
<name>TestReporter</name>
<version>1.0-SNAPSHOT</version>

maven會根據模組的版本號(pom檔案中的version)中是否帶有-SNAPSHOT來判斷是快照版本還是正式版本。如果是快照版本,那麼在mvn deploy時會自動釋出到快照版本庫中,而使用快照版本的模組,在不更改版本號的情況下,直接編譯打包時,maven會自動從映象伺服器上下載最新的快照版本。如果是正式釋出版本,那麼在mvn deploy時會自動釋出到正式版本庫中,而使用正式版本的模組,在不更改版本號的情況下,編譯打包時如果本地已經存在該版本的模組則不會主動去映象伺服器上下載。

所以,我們在開發階段,可以將公用庫的版本設定為快照版本,而被依賴元件則引用快照版本進行開發,在公用庫的快照版本更新後,我們也不需要修改pom檔案提示版本號來下載新的版本,直接mvn執行相關編譯、打包命令即可重新下載最新的快照庫了,從而也方便了我們進行開發。

私倉賬號和密碼

修改maven配置檔案,在$MAVEN_HOME/conf/setting.xml中增加如下配置:

   <server>
    <id>maven-releases</id>
    <username>admin</username>
    <password>admin123</password>
    </server>
    <server>
    <id>maven-snapshots</id>
    <username>admin</username>
    <password>admin123</password>
    </server>

注意這裡配置的server的id必須和pom檔案中的distributionManagement對應倉庫的id保持一致,maven在處理髮布時會根據id查詢使用者名稱稱和密碼進行登入和檔案的上傳發布。

遠端釋出到私服

修改maven配置檔案,在$MAVEN_HOME/conf/setting.xml中增加如下配置:

<profiles>
 <profile>
       <id>defaultProfile</id>
       <repositories>
         <repository>
             <id>maven-releases</id>
             <name>User Porject Release</name>
             <url>http://nexus.tbb.com/repository/maven-releases/</url>
             <snapshots>
                 <enabled>false</enabled>
             </snapshots>
             <releases>
                 <enabled>true</enabled>
             </releases>
         </repository>
         <repository>
             <id>maven-snapshots</id>
             <name>User Porject Snapshot</name>
             <url>http://nexus.tbb.com/repository/maven-snapshots/</url>
             <snapshots>
                 <enabled>true</enabled>
                 <updatePolicy>always</updatePolicy>
             </snapshots>
         </repository>
     </repositories>
     </profile>
     </profiles>

或者修改POM/xml檔案,如下:

 <repositories>
    <repository>
        <id>maven-releases</id>
        <name>User Porject Release</name>
        <url>http://nexus.tbb.com/repository/maven-releases/</url>
     </repository>
     <repository>
        <id>maven-snapshots</id>
        <name>User Porject Snapshot</name>
        <url>http://nexus.tbb.com/repository/maven-snapshots/</url>
     </repository>
</repositories>

修改專案POM.xml檔案,如下:

 <distributionManagement>
    <snapshotRepository>
        <id>maven-snapshots</id>
        <name>User Porject Snapshot</name>
        <url>http://nexus.tbb.com/repository/maven-snapshots/</url>
        <uniqueVersion>true</uniqueVersion>
    </snapshotRepository>
    <repository>
        <id>maven-releases</id>
        <name>User Porject Release</name>
        <url>http://nexus.tbb.com/repository/maven-releases/</url>
    </repository>
</distributionManagement>

執行部署操作

  1. 方式一,直接使用mvn deploy命令
  2. 使用IDE中的maven快捷操作,以idea為例,如圖,雙擊deploy即可:
    Maven deploy部署jar包到遠端私倉
    Maven deploy部署jar包到遠端私倉
    Maven deploy部署jar包到遠端私倉

相關文章