最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Maven屬性與版本管理詳細(xì)步驟分解

 更新時(shí)間:2022年08月19日 09:08:51   作者:十八歲討厭編程  
這篇文章主要介紹了Maven中關(guān)于屬性與版本控制管理的步驟操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

屬性

問(wèn)題引入

前面我們已經(jīng)在父工程中的dependencyManagement標(biāo)簽中對(duì)項(xiàng)目中所使用的jar包版本進(jìn)行了統(tǒng)一的管理,但是如果在標(biāo)簽中有如下的內(nèi)容:

你會(huì)發(fā)現(xiàn),如果我們現(xiàn)在想更新Spring的版本,你會(huì)發(fā)現(xiàn)我們依然需要更新多個(gè)jar包的版本,這樣的話還是有可能出現(xiàn)漏改導(dǎo)致程序出問(wèn)題,而且改起來(lái)也是比較麻煩。

問(wèn)題清楚后,我們需要解決的話,就可以參考咱們java基礎(chǔ)所學(xué)習(xí)的變量,聲明一個(gè)變量,在其他地方使用該變量,當(dāng)變量的值發(fā)生變化后,所有使用變量的地方,就會(huì)跟著修改,即:

解決步驟

步驟1:父工程中定義屬性

<properties>
    <spring.version>5.2.10.RELEASE</spring.version>
    <junit.version>4.12</junit.version>
    <mybatis-spring.version>1.3.0</mybatis-spring.version>
</properties>

步驟2:修改依賴的version

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${spring.version}</version>
</dependency>

此時(shí),我們只需要更新父工程中properties標(biāo)簽中所維護(hù)的jar包版本,所有子項(xiàng)目中的版本也就跟著更新。當(dāng)然除了將spring相關(guān)版本進(jìn)行維護(hù),我們可以將其他的jar包版本也進(jìn)行抽取,這樣就可以對(duì)項(xiàng)目中所有jar包的版本進(jìn)行統(tǒng)一維護(hù),如:

<!--定義屬性-->
<properties>
    <spring.version>5.2.10.RELEASE</spring.version>
    <junit.version>4.12</junit.version>
    <mybatis-spring.version>1.3.0</mybatis-spring.version>
</properties>

配置文件加載屬性

Maven中的屬性我們已經(jīng)介紹過(guò)了,現(xiàn)在也已經(jīng)能夠通過(guò)Maven來(lái)集中管理Maven中依賴jar包的版本。但是又有新的需求,就是想讓Maven對(duì)于屬性的管理范圍能更大些,比如我們之前項(xiàng)目中的jdbc.properties,這個(gè)配置文件中的屬性,能不能也來(lái)讓Maven進(jìn)行管理呢?

答案是肯定的,具體的實(shí)現(xiàn)步驟為:

步驟1:父工程定義屬性

<properties>
   <jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url>
</properties>

步驟2:jdbc.properties文件中引用屬性

在jdbc.properties,將jdbc.url的值直接獲取Maven配置的屬性

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=${jdbc.url}
jdbc.username=root
jdbc.password=***********

步驟3:設(shè)置maven過(guò)濾文件范圍

Maven在默認(rèn)情況下是從當(dāng)前項(xiàng)目的src\main\resources下讀取文件進(jìn)行打包。現(xiàn)在我們需要打包的資源文件是在maven_02_ssm下,需要我們通過(guò)配置來(lái)指定下具體的資源目錄。

<build>
    <resources>
        <!--設(shè)置資源目錄-->
        <resource>
            <directory>../maven_02_ssm/src/main/resources</directory>
            <!--設(shè)置能夠解析${},默認(rèn)是false -->
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

說(shuō)明:directory路徑前要添加../的原因是maven_02_ssm相對(duì)于父工程的pom.xml路徑是在其上一層的目錄中,所以需要添加。

修改完后,注意maven_02_ssm項(xiàng)目的resources目錄就多了些東西,如下:

步驟4:測(cè)試是否生效

測(cè)試的時(shí)候,只需要將maven_02_ssm項(xiàng)目進(jìn)行打包,然后觀察打包結(jié)果中最終生成的內(nèi)容是否為Maven中配置的內(nèi)容。

上面的屬性管理就已經(jīng)完成,但是有一個(gè)問(wèn)題沒(méi)有解決,因?yàn)椴恢皇莔aven_02_ssm項(xiàng)目需要有屬性被父工程管理,如果有多個(gè)項(xiàng)目需要配置,該如何實(shí)現(xiàn)呢?

方式一:

<build>
    <resources>
        <!--設(shè)置資源目錄,并設(shè)置能夠解析${}-->
        <resource>
            <directory>../maven_02_ssm/src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>../maven_03_pojo/src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
        ...
    </resources>
</build>

可以配,但是如果項(xiàng)目夠多的話,這個(gè)配置也是比較繁瑣

方式二:

<build>
    <resources>
        <!--
			${project.basedir}: 當(dāng)前項(xiàng)目所在目錄,子項(xiàng)目繼承了父項(xiàng)目,
			相當(dāng)于所有的子項(xiàng)目都添加了資源目錄的過(guò)濾
		-->
        <resource>
            <directory>${project.basedir}/src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

說(shuō)明:打包的過(guò)程中如果報(bào)如下錯(cuò)誤:

原因就是Maven發(fā)現(xiàn)你的項(xiàng)目為web項(xiàng)目,就會(huì)去找web項(xiàng)目的入口web.xml[配置文件配置的方式],發(fā)現(xiàn)沒(méi)有找到,就會(huì)報(bào)錯(cuò)。

解決方案1:在maven_02_ssm項(xiàng)目的src\main\webapp\WEB-INF\添加一個(gè)web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
</web-app>

解決方案2: 配置maven打包war時(shí),忽略web.xml檢查

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.2.3</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>

上面我們所使用的都是Maven的自定義屬性,除了${project.basedir},它屬于Maven的內(nèi)置系統(tǒng)屬性。

在Maven中的屬性分為:

  • 自定義屬性(常用)
  • 內(nèi)置屬性
  • Setting屬性
  • Java系統(tǒng)屬性
  • 環(huán)境變量屬性

具體如何查看這些屬性:

在cmd命令行中輸入mvn help:system

具體使用,就是使用 ${key}來(lái)獲取,key為等號(hào)左邊的,值為等號(hào)右邊的,比如獲取紅線的值,對(duì)應(yīng)的寫法為 ${java.runtime.name}

版本管理

關(guān)于這個(gè)版本管理解決的問(wèn)題是,在Maven創(chuàng)建項(xiàng)目和引用別人項(xiàng)目的時(shí)候,我們都看到過(guò)如下內(nèi)容:

這里面有兩個(gè)單詞,SNAPSHOT和RELEASE,它們所代表的含義是什么呢?

我們打開(kāi)Maven倉(cāng)庫(kù)地址https://mvnrepository.com/

在我們jar包的版本定義中,有兩個(gè)工程版本用的比較多:

SNAPSHOT(快照版本)

  • 項(xiàng)目開(kāi)發(fā)過(guò)程中臨時(shí)輸出的版本,稱為快照版本快照版本
  • 會(huì)隨著開(kāi)發(fā)的進(jìn)展不斷更新

RELEASE(發(fā)布版本)

  • 項(xiàng)目開(kāi)發(fā)到一定階段里程碑后,向團(tuán)隊(duì)外部發(fā)布較為穩(wěn)定的版本,這種版本所對(duì)應(yīng)的構(gòu)件文件是穩(wěn)定的
  • 即便進(jìn)行功能的后續(xù)開(kāi)發(fā),也不會(huì)改變當(dāng)前發(fā)布版本內(nèi)容,這種版本稱為發(fā)布版本

除了上面的工程版本,我們還經(jīng)常能看到一些發(fā)布版本:

  • alpha版:內(nèi)測(cè)版,bug多不穩(wěn)定內(nèi)部版本不斷添加新功能
  • beta版:公測(cè)版,不穩(wěn)定(比alpha穩(wěn)定些),bug相對(duì)較多不斷添加新功能
  • 純數(shù)字版

對(duì)于這些版本,大家只需要簡(jiǎn)單認(rèn)識(shí)下即可。

到此這篇關(guān)于Maven屬性與版本管理詳細(xì)步驟分解的文章就介紹到這了,更多相關(guān)Maven屬性與版本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java String字符串補(bǔ)0或空格的實(shí)現(xiàn)代碼

    Java String字符串補(bǔ)0或空格的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java String字符串補(bǔ)0或空格的實(shí)現(xiàn)代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-09-09
  • 使用AOP攔截Controller獲取@PathVariable注解傳入的參數(shù)

    使用AOP攔截Controller獲取@PathVariable注解傳入的參數(shù)

    這篇文章主要介紹了使用AOP攔截Controller獲取@PathVariable注解傳入的參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Intellij IDEA 2020.3 配置教程詳解

    Intellij IDEA 2020.3 配置教程詳解

    這篇文章主要介紹了Intellij IDEA 2020.3 配置教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Java中synchronized鎖的深入理解

    Java中synchronized鎖的深入理解

    這篇本文主要對(duì)Java中synchronized鎖進(jìn)行深入理解,文中通過(guò)synchronized的優(yōu)化,synchronized的實(shí)現(xiàn)原理及synchronized的升級(jí)過(guò)程來(lái)介紹Java中synchronized鎖,感興趣的同學(xué)可以跟著小編一起來(lái)學(xué)習(xí)
    2023-05-05
  • 解決調(diào)用ftpClient.retrieveFileStream(String?remoteFilePath)第二次讀取為空問(wèn)題

    解決調(diào)用ftpClient.retrieveFileStream(String?remoteFilePath)第二次讀

    這篇文章主要給大家介紹了關(guān)于如何解決調(diào)用ftpClient.retrieveFileStream(String?remoteFilePath)第二次讀取為空問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • SpringMVC源碼之HandlerMapping處理器映射器解析

    SpringMVC源碼之HandlerMapping處理器映射器解析

    這篇文章主要介紹了SpringMVC源碼之HandlerMapping處理器映射器解析,在Spring?MVC中,HandlerMapping處理器映射器用于確定請(qǐng)求處理器對(duì)象,請(qǐng)求處理器可以是任何對(duì)象,只要它們使用了@Controller注解或注解@RequestMapping,需要的朋友可以參考下
    2023-08-08
  • Java多線程中wait、notify、notifyAll使用詳解

    Java多線程中wait、notify、notifyAll使用詳解

    這篇文章主要介紹了Java多線程中wait、notify、notifyAll使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • Java后端實(shí)現(xiàn)MD5加密的方法

    Java后端實(shí)現(xiàn)MD5加密的方法

    有的時(shí)候因?yàn)闃I(yè)務(wù)的需要,我們要制作關(guān)于密碼的修改功能。而關(guān)于密碼的加密一般都是用MD5,那么這篇文章將介紹如何在Java的后端實(shí)現(xiàn)MD5加密,有需要的可以參考借鑒。
    2016-08-08
  • Spring中屬性注入詳解

    Spring中屬性注入詳解

    這篇文章主要為大家詳細(xì)介紹了Spring中屬性注入,演示了int、String、數(shù)組、list等屬性的注入,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Spring AOP定義AfterReturning增加實(shí)例分析

    Spring AOP定義AfterReturning增加實(shí)例分析

    這篇文章主要介紹了Spring AOP定義AfterReturning增加,結(jié)合實(shí)例形式分析了Spring面相切面AOP定義AfterReturning增加相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2020-01-01

最新評(píng)論

惠州市| 平湖市| 洛浦县| 防城港市| 香河县| 井研县| 黄平县| 古蔺县| 罗城| 开封市| 马尔康县| 象山县| 抚州市| 平山县| 临安市| 招远市| 额济纳旗| 镇康县| 望城县| 新巴尔虎左旗| 湖南省| 天柱县| 宜兰县| 开封县| 余干县| 滨海县| 景宁| 宿州市| 平山县| 南昌县| 宕昌县| 毕节市| 东兴市| 永泰县| 古浪县| 呼伦贝尔市| 平湖市| 桐梓县| 天镇县| 遵义市| 靖安县|