欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Maven中<distributionManagement>的使用及說明

 更新時間:2025年01月22日 09:29:05   作者:對酒當(dāng)歌丶人生幾何  
本文主要介紹了Maven中的SNAPSHOT和RELEASE倉庫的區(qū)別,以及如何在POM文件中配置和使用快照版本,快照版本可以實現(xiàn)實時更新,方便開發(fā)過程中的依賴管理,同時,本文還總結(jié)了Maven的一些常用命令及其作用

SNAPSHOT倉庫與RELEASE倉庫的區(qū)別

我們在開發(fā)軟件階段時會在POM文件中導(dǎo)入很多依賴公共庫,這些公共庫可能隨時需要修改并發(fā)布,可能一天就要發(fā)布一次甚至一天要發(fā)布N次。

對與采用maven來管理依賴公共庫時,由于maven的依賴管理是基于版本管理(version),如果我們本地已經(jīng)存在了公共庫的依賴,那么即使內(nèi)部服務(wù)器上的組件發(fā)生變化,在本地與服務(wù)器上依賴版本相同的情況下,maven不會再去內(nèi)部服務(wù)器上拉取最新的依賴,也就是說無法實時將服務(wù)器上的更新同步到本地。

如果要解決這個問題,就需要升級組件的版本號(version),可這樣就明顯不符合要求和實際情況了,而SNAPSHOT快照版本,就可以解決這個問題,對于每次內(nèi)部服務(wù)器上更新了組件,本地都會去重新拉取一遍。

在maven中的倉庫分為兩種:

  • snapshot快照倉庫
  • release發(fā)布倉庫

snapshot快照倉庫用于保存開發(fā)過程中的不穩(wěn)定版本,release正式倉庫則是用來保存穩(wěn)定的發(fā)行版本(比如Spring、SpringBoot)。

定義一個組件/模塊為快照版本,只需要在pom文件中在該模塊的版本號后加上-SNAPSHOT即可,如下:

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.seeker</groupId>
    <artifactId>data-export-center</artifactId>
    <packaging>pom</packaging>
    <version>1.0.0-SNAPSHOT</version>

maven會根據(jù)模塊的版本號(version)中是否帶有-SNAPSHOT來判斷是快照版本還是正式版本。

如果是快照版本,那么在mvn deploy時會自動發(fā)布到快照版本庫中,而使用快照版本的模塊,在不更改版本號的情況下,直接編譯打包時,maven會自動從鏡像服務(wù)器上下載最新的快照版本。

那么如果是正式發(fā)布版本(release),那么在mvn deploy時會自動發(fā)布到正式版本庫中,而使用正式版本的模塊,在不更改版本號的情況下,編譯打包時如果本地已經(jīng)存在該版本的模塊則不會主動去鏡像服務(wù)器上下載。

所以,我們在開發(fā)階段,可以將公用庫的版本設(shè)置為快照版本,而被依賴組件則引用快照版本進行開發(fā),在公用庫的快照版本更新后,我們也不需要修改pom文件提示版本號來下載新的版本,直接mvn執(zhí)行相關(guān)編譯、打包命令即可重新下載最新的快照庫了,從而也方便了我們進行開發(fā)。

distributionManagement定義SNAPSHOT倉庫和RELEASE倉庫

通常一個POM文件的內(nèi)容格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     
    <parent>
        <groupId>com.seeker</groupId>
        <artifactId>common-server</artifactId>
        <version>2.0.0-SNAPSHOT</version>
    </parent>    
     
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.seeker</groupId>
    <artifactId>data-export-center</artifactId>
    <packaging>pom</packaging>
    <version>${project.release.version}</version>
    
    /**
    子模塊
    */
    <modules>
    XXXXXXX
    </modules>
    
    /**
    自定義屬性
    */
    <properties>  
        <spring.version>5.1.9.RELEASE</spring.version>
        <project.release.version>1.0.0SNAPSHOT</project.release.version>  
    </properties> 
    /**
    統(tǒng)一依賴版本,子模塊可以不用寫版本號
    */
    
	<dependencyManagement>
	    <dependency>
   	      <groupId>org.springframework</groupId>
    	  <artifactId>spring-context</artifactId>
    	<version>${spring.version}</version>
	   </dependency>
	<dependencyManagement>
    
   <profiles>  
        <profile>  
            <id>release</id>  
        <properties>  
            <project.release.version>2.0.0RELEASE</project.release.version>  
        </properties>  
        </profile>  
    </profiles>  
    
    /**
    <!--定義snapshots倉庫和releases倉庫的地址--> 
    */
  	<distributionManagement>
        <repository>
            <id>huawei</id>
            <url>https://huaweiCloud.com.cn/artifactory/seeker/</url>
        </repository>
        <snapshotRepository>
            <id>seekerWorkds</id>
            <url>https://seeker.top.com.cn/artifactory/seeker/</url>
        </snapshotRepository>
    </distributionManagement>

首先我們看到pom文件中version的定義是采用占位符的形式,這樣的好處是可以根據(jù)不同的profile來替換版本信息,比如maven默認(rèn)是使用1.0.0SNAPSHOT作為該模塊的版本,如果在發(fā)布時使用mvn deploy -P release 的命令,那么會自動使用2.0.0RELEASE作為發(fā)布版本,那么根據(jù)maven處理snapshot和release的規(guī)則,由于版本號后不帶-SNAPSHOT故當(dāng)成是正式發(fā)布版本。

會被發(fā)布到release倉庫,在distributionManagement段中配置的是snapshot快照庫和release發(fā)布庫的地址。

對于版本庫主要是id和url的配置,配置完成后就可以通過mvn deploy進行發(fā)布了。

Maven常用命令及其作用

  • maven clean:對項目進行清理,刪除target目錄下編譯的內(nèi)容(將以前編譯得到的舊文件class字節(jié)碼文件刪除)。
  • maven compile:編譯項目源代碼,將JAVA源程序編譯成class文件。
  • maven test:對項目進行運行測試。
  • maven packet:打包文件并存放到項目的target目錄下,打包好的文件通常都是編譯后的class文件。
  • maven install:在本地倉庫生成倉庫的安裝包,可供其他項目引用,同時打包后的文件放到項目的target目錄下。
  • maven deploy:可以將maven所打的jar包上傳到遠(yuǎn)程的repository,便于其他開發(fā)者和工程共享。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java拆分List的三種方式總結(jié)

    Java拆分List的三種方式總結(jié)

    開發(fā)中我們可能會遇到一個大的集合,然后我們需要對集合進行拆分,在這篇文章中,主要介紹了Java拆分List的三種方式,需要的可以參考下
    2023-05-05
  • java自定義動態(tài)鏈接數(shù)據(jù)庫示例

    java自定義動態(tài)鏈接數(shù)據(jù)庫示例

    這篇文章主要介紹了java自定義動態(tài)鏈接數(shù)據(jù)庫示例,需要的朋友可以參考下
    2014-02-02
  • Java注解Annotation解析

    Java注解Annotation解析

    這篇文章主要為大家詳細(xì)介紹了Java注解Annotation,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • SpringBoot整合Shiro的代碼詳解

    SpringBoot整合Shiro的代碼詳解

    shiro是一個權(quán)限框架,它提供了很方便的權(quán)限認(rèn)證和登錄的功能.下面通過本文給大家分享SpringBoot整合Shiro的代碼詳解,需要的的朋友參考下吧
    2017-08-08
  • idea配置SVN的教程

    idea配置SVN的教程

    文章介紹了如何安裝和配置TortoiseSVN以及在IntelliJ?IDEA中配置SVN,首先,安裝TortoiseSVN時需要選擇與電腦配置相匹配的版本,并確保安裝命令行客戶端工具,其次,在IntelliJ?IDEA中配置SVN時,需要指定SVN可執(zhí)行文件的路徑
    2025-01-01
  • SpringBoot?整合?ElasticSearch操作各種高級查詢搜索

    SpringBoot?整合?ElasticSearch操作各種高級查詢搜索

    這篇文章主要介紹了SpringBoot?整合?ES?進行各種高級查詢搜索的實踐記錄,本文主要圍繞?SpringBoot?整合?ElasticSearch?進行各種高級查詢的介紹,需要的朋友可以參考下
    2022-06-06
  • servlet之session簡介_動力節(jié)點Java學(xué)院整理

    servlet之session簡介_動力節(jié)點Java學(xué)院整理

    這篇文章主要介紹了servlet之session簡介,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 如何設(shè)計一個秒殺系統(tǒng)

    如何設(shè)計一個秒殺系統(tǒng)

    本文主要介紹了如何設(shè)計一個秒殺系統(tǒng)的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • SpringBoot使用validation做參數(shù)校驗說明

    SpringBoot使用validation做參數(shù)校驗說明

    這篇文章主要介紹了SpringBoot使用validation做參數(shù)校驗說明,首先通過添加hibernate-validator展開全文內(nèi)容,具有一定的參考價值,需要的小伙伴可以參考與喜愛
    2022-04-04
  • IDEA里找不到Maven的有效解決辦法(小白超詳細(xì))

    IDEA里找不到Maven的有效解決辦法(小白超詳細(xì))

    這篇文章主要給大家介紹了關(guān)于IDEA里找不到Maven的有效解決辦法,文中通過圖文將解決的辦法介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07

最新評論