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

maven父工程relativepath標(biāo)簽使用解讀

 更新時(shí)間:2024年11月13日 10:01:25   作者:code小魚  
文章主要介紹了在使用Maven構(gòu)建父子工程時(shí)如何通過(guò)設(shè)置父工程和子工程的pom文件來(lái)管理依賴和版本,當(dāng)子工程是Spring Boot項(xiàng)目時(shí),可以通過(guò)關(guān)閉`relativePath`標(biāo)簽來(lái)繼承Spring Boot的父工程,同時(shí)在父工程中使用`dependencyManagement`標(biāo)簽來(lái)統(tǒng)一管理Spring Boot的依賴版本

1、概述

我們?cè)谑褂胢aven構(gòu)建父子工程時(shí),通常會(huì)在父工程中將pom的打包方式設(shè)置為pom,然后在pom文件中使用modules標(biāo)簽來(lái)聲明子工程,我們?cè)谧庸こ痰膒om文件中使用parent標(biāo)簽來(lái)聲明自己屬于哪個(gè)父工程。

這樣的好處是可以方便打包和管理依賴。

2、問(wèn)題

如果我們的子工程是一個(gè)springBoot項(xiàng)目,那么我們可以在pom文件中使用parent標(biāo)簽去繼承spring-boot的praent工程,這樣的好處是我們項(xiàng)目中使用有關(guān)spring-boot的依賴可以全由父工程來(lái)管理,方便版本統(tǒng)一。

但現(xiàn)在我們的praent標(biāo)簽已經(jīng)指向了我們自己創(chuàng)建的父工程。

在pom中只允許使用一個(gè)praent標(biāo)簽,那還有什么辦法呢?

3、答案(方式一)

這是一個(gè)父工程的pom文件,該工程下管理了一個(gè)model1子工程

<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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>mavenParent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <modules>
        <module>model1</module>
    </modules>

</project>

子工程pom文件:我們可以看到我們的父工程是聲明的spring-boot-starter-parent,而不是我們自己的父工程,其實(shí)這樣也可以被我們自己的父工程所管理,因?yàn)槲覀冊(cè)诟腹こ讨惺褂昧薽odules標(biāo)簽。

這里有一個(gè)關(guān)鍵點(diǎn):我將relativePath標(biāo)簽關(guān)閉了,也就是置空.(該標(biāo)簽必須置空,不寫會(huì)使用默認(rèn)值也會(huì)報(bào)錯(cuò))。

如果你是使用idea創(chuàng)建的maven工程,手動(dòng)勾選了springboot,那么在relativePath標(biāo)簽旁邊會(huì)注釋一段話:在本地倉(cāng)庫(kù)查找依賴

<?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">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>model1</artifactId>
    <packaging>jar</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.2</version>
        <relativePath /><!-- lookup parent from repository -->
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <!-- 這里不需要指定版本號(hào),版本由上面的父工程管理了 -->
        </dependency>
    </dependencies>

</project>

4、詳解

relativePath標(biāo)簽含義:指定父工程的pom文件路徑

如果你不使用這個(gè)標(biāo)簽,那他的默認(rèn)值是<relativePath>../pom<relativePath>。也就是指向當(dāng)前模塊的上一級(jí)目錄中的pom文件,也就是我們自己聲明的父工程。

他的查找順序?yàn)椋簉elativePath元素中的地址–本地倉(cāng)庫(kù)–遠(yuǎn)程倉(cāng)庫(kù)。如果標(biāo)簽指定的地址找不到他就會(huì)去本地的maven倉(cāng)庫(kù)中找,如果本地倉(cāng)庫(kù)沒(méi)有那就去遠(yuǎn)程倉(cāng)庫(kù)找。

使用<relativePath/>指定一個(gè)空地址,他就會(huì)去本地倉(cāng)庫(kù)中找。

5、番外:方式二

還有一種方式那就是不使用繼承spring-boot-starter-parent的方式來(lái)管理springboot的依賴,我們可以點(diǎn)進(jìn)這個(gè)spring-boot-starter-parent的pom文件中查看,我們發(fā)現(xiàn)它也有一個(gè)父工程

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.7.2</version>
  </parent>
  <artifactId>spring-boot-starter-parent</artifactId>
  <packaging>pom</packaging>
  <name>spring-boot-starter-parent</name>
  <description>Parent pom providing dependency and plugin management for applications built with Maven</description>
  

我們?cè)冱c(diǎn)進(jìn)這個(gè)父工程spring-boot-dependencies看,(這是一部分),我們可以看到其實(shí)幫我們管理版本的是這個(gè)父工程,它的打包方式也是pom,在properties標(biāo)簽中管理了很多依賴的版本。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-dependencies</artifactId>
  <version>2.7.2</version>
  <packaging>pom</packaging>
  <name>spring-boot-dependencies</name>
  <description>Spring Boot Dependencies</description>
  <url>https://spring.io/projects/spring-boot</url>
  
  <properties>
    <activemq.version>5.16.5</activemq.version>
    <antlr2.version>2.7.7</antlr2.version>
    <appengine-sdk.version>1.9.98</appengine-sdk.version>
    <artemis.version>2.19.1</artemis.version>
    <aspectj.version>1.9.7</aspectj.version>
    <assertj.version>3.22.0</assertj.version>
    <atomikos.version>4.0.6</atomikos.version>
  </properties>

</project>

既然是這樣,還記得dependencyManagement標(biāo)簽嗎,這個(gè)標(biāo)簽可不是只能在父工程中才可以使用,我們?cè)谶@里使用該標(biāo)簽來(lái)導(dǎo)入spring-boot-dependencies為我們整理的依賴,這樣項(xiàng)目中國(guó)使用到的有關(guān)springboot的依賴就又可以不寫版本號(hào)了。

<?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">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>model1</artifactId>
    <packaging>jar</packaging>
    <!--自己的父工程-->
    <parent>
        <groupId>org.example</groupId>
        <artifactId>mavenParent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath/>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <!-- 這里不需要指定版本號(hào),版本由下面的dependencyManagement管理了 -->
        </dependency>
    </dependencies>

    <!-- 這里dependencyManagement管理版本,只是管理版本,不導(dǎo)入依賴哦! -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.7.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

總結(jié)

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

相關(guān)文章

  • 使用SpringBoot簡(jiǎn)單實(shí)現(xiàn)無(wú)感知的刷新 Token功能

    使用SpringBoot簡(jiǎn)單實(shí)現(xiàn)無(wú)感知的刷新 Token功能

    實(shí)現(xiàn)無(wú)感知的刷新 Token 是一種提升用戶體驗(yàn)的常用技術(shù),可以在用戶使用應(yīng)用時(shí)自動(dòng)更新 Token,無(wú)需用戶手動(dòng)干預(yù),這種技術(shù)在需要長(zhǎng)時(shí)間保持用戶登錄狀態(tài)的應(yīng)用中非常有用,以下是使用Spring Boot實(shí)現(xiàn)無(wú)感知刷新Token的一個(gè)場(chǎng)景案例和相應(yīng)的示例代碼
    2024-09-09
  • 解決打開的idea項(xiàng)目maven不生效問(wèn)題

    解決打開的idea項(xiàng)目maven不生效問(wèn)題

    這篇文章主要給大家介紹了關(guān)于如何解決打開的idea項(xiàng)目maven不生效問(wèn)題,最近在配置maven時(shí),發(fā)現(xiàn)無(wú)論配置幾遍,IDEA中的maven配置總會(huì)還原成默認(rèn)的,所以這里給大家分享下解決辦法,需要的朋友可以參考下
    2023-07-07
  • Java?從json提取數(shù)組并轉(zhuǎn)換為list的操作方法

    Java?從json提取數(shù)組并轉(zhuǎn)換為list的操作方法

    這篇文章主要介紹了Java?從json提取出數(shù)組并轉(zhuǎn)換為list,使用getJSONArray()獲取到j(luò)sonarray后,再將jsonArray轉(zhuǎn)換為字符串,最后將字符串解析為L(zhǎng)ist列表,本文通過(guò)實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下
    2022-10-10
  • PostConstruct注解標(biāo)記類ApplicationContext未加載空指針

    PostConstruct注解標(biāo)記類ApplicationContext未加載空指針

    這篇文章主要為大家介紹了@PostConstruct注解標(biāo)記類ApplicationContext未加載空指針示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • SpringBoot日志從調(diào)試到持久化的全解析

    SpringBoot日志從調(diào)試到持久化的全解析

    這篇文章主要介紹了Spring?Boot項(xiàng)目中日志的用途、使用方法、日志級(jí)別、配置以及持久化等方面的內(nèi)容,日志是開發(fā)者排查問(wèn)題、監(jiān)控系統(tǒng)運(yùn)行狀態(tài)的重要工具,感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • java 中數(shù)據(jù)庫(kù)連接的JDBC和驅(qū)動(dòng)程序的深入分析

    java 中數(shù)據(jù)庫(kù)連接的JDBC和驅(qū)動(dòng)程序的深入分析

    這篇文章主要介紹了java 中數(shù)據(jù)庫(kù)連接的JDBC和驅(qū)動(dòng)程序的深入分析的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • java應(yīng)用開發(fā)之JVM運(yùn)行時(shí)內(nèi)存分析

    java應(yīng)用開發(fā)之JVM運(yùn)行時(shí)內(nèi)存分析

    這篇文章主要介紹了java應(yīng)用開發(fā)之JVM運(yùn)行時(shí)內(nèi)存,文中附含圖文示例內(nèi)容分析非常簡(jiǎn)要,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • Ubuntu安裝jdk8常用方法流程解析

    Ubuntu安裝jdk8常用方法流程解析

    這篇文章主要介紹了Ubuntu安裝jdk8常用方法流程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 基于Java實(shí)現(xiàn)Excel列數(shù)據(jù)提取工具

    基于Java實(shí)現(xiàn)Excel列數(shù)據(jù)提取工具

    這篇文章主要介紹了一個(gè)使用Java語(yǔ)言開發(fā)的Excel列數(shù)據(jù)提取工具,該工具借助Apache?POI庫(kù)實(shí)現(xiàn)對(duì)Excel文件的讀取與特定列數(shù)據(jù)提取功能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-06-06
  • Spring?Boot在開發(fā)過(guò)程中常用IDEA插件

    Spring?Boot在開發(fā)過(guò)程中常用IDEA插件

    這篇文章主要為大家介紹了Spring?Boot在開發(fā)過(guò)程中常用IDEA插件,幫助大家提高開發(fā)工作效率,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03

最新評(píng)論

横峰县| 信阳市| 庄河市| 武鸣县| 湘潭县| 卢氏县| 定南县| 隆回县| 西平县| 新巴尔虎右旗| 常州市| 沛县| 怀仁县| 临猗县| 玉树县| 华宁县| 安岳县| 靖江市| 淮南市| 石泉县| 项城市| 察隅县| 枝江市| 尼勒克县| 呼图壁县| 郑州市| 合山市| 海兴县| 云安县| 开阳县| 屯门区| 怀柔区| 如东县| 霞浦县| 龙里县| 外汇| 图们市| 西安市| 吉林省| 田阳县| 石渠县|