亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Maven繼承與聚合的作用是什么

發布時間:2022-08-30 11:10:31 來源:億速云 閱讀:213 作者:iii 欄目:開發技術

這篇文章主要講解了“Maven繼承與聚合的作用是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Maven繼承與聚合的作用是什么”吧!

    一、繼承

    引言

    繼承關系可以對不同模塊的依賴版本做統一管理,因為子模塊中的依賴基本都繼承于父模塊,父模塊中指定哪個版本,子模塊就繼承哪個版本,可以有效避免不同模塊可能采用不同版本的依賴時產生的沖突

    1. 繼承關系的實現

    (1)parent 模塊設置

    parent 模塊即父模塊,由于父模塊只是為了給子模塊提供依賴,所以父模塊中只需要一個 pom.xml 文件即可。父模塊的打包方式必須設置為 pom(默認打包方式是 jar)

        <groupId>com.mzz</groupId>
        <artifactId>parent-maven</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!-- 設置打包方式為 pom -->
        <packaging>pom</packaging>

    只要設置了 packaging 屬性為 pom,這個模塊就可以作為 parent 模塊被繼承了

    (2)子模塊設置

    子模塊中只要設置了 parent 標簽,就可以建立繼承關系。

    所以繼承主要體現在子模塊,parent 模塊是感受不到繼承關系的,也無法從 parent 模塊中看出哪些模塊繼承了自己。

    另外繼承關系建議以后,如果子模塊與父模塊處于同一 groupId 下,那么子模塊可以不寫 groupId

        <!--<groupId>com.mzz</groupId>-->
        <artifactId>project-dao</artifactId>
        <version>1.0-SNAPSHOT</version>
    	<parent>
    		<!-- parent 模塊的坐標與版本 -->
    		<groupId>com.mzz</groupId>
    		<artifactId>parent-maven</artifactId>
    		<version>1.0-SNAPSHOT</version>
    		<!-- parent 模塊的相對路徑 -->
    		<relativePath>../parent-maven/pom.xml</relativePath>
    	</parent>

    對 relativePath 屬性做一些補充:

    • relativePath 可以省略,前提是 parent 模塊已經 install 至倉庫,否則子模塊無法定位到 parent,不能通過編譯

    • 相對路徑最后可以不寫 pom.xml,只定位到父模塊的文件夾也可以

    2. 依賴配置

    (1)必須繼承的依賴

    parent 模塊中聲明的依賴便是子模塊必須繼承的依賴,子模塊中不必聲明便從父模塊中繼承了這些依賴

    <dependencies>
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-webmvc</artifactId>
    		<version>5.2.20.RELEASE</version>
    	</dependency>
    	<!-- 省略了其他依賴的聲明 -->
    	<dependency>
    		<groupId>javax.servlet</groupId>
    		<artifactId>javax.servlet-api</artifactId>
    		<version>4.0.1</version>
    		<scope>provided</scope>		<!-- scope 屬性也會被繼承 -->
    	</dependency>
    <dependencies>

    Maven繼承與聚合的作用是什么

    如上圖,可見子模塊中未聲明依賴就繼承了 parent 中的所有依賴

    (2)有選擇地繼承依賴

    parent 模塊中設置依賴管理 dependencyManagement 后,在其中聲明的依賴就是供子模塊選擇的依賴。子模塊需要哪些依賴,必須在子模塊中聲明依賴,但不需要注明 version,因為版本由 parent 來指定。

    <!-- parent 模塊 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>5.2.10.RELEASE</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <!-- 子模塊聲明依賴 -->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>
    </dependencies>

    如果子模塊聲明的依賴有 version 屬性,那么這個依賴并不繼承自 parent

    另外,parent 模塊聲明在 dependencyManagement 中的依賴并不被 parent 模塊所依賴

    (3)插件繼承

    插件的繼承規則和設置方法與前面的依賴極為相似,同樣也有插件管理 pluginManagement,與 dependencyManagement 類似,這里給出一個 parent 中設置的樣例模板

    <build>
        <plugins>
    		<!-- 聲明必須繼承的插件 -->
        </plugins>
        <pluginManagement>
            <plugins>
    			<!-- 聲明可供選擇是否繼承的插件 -->
            </plugins>
        </pluginManagement>
    </build>

    二、聚合

    引言

    聚合就是指將多個模塊組織成一個整體,同時進行項目的構建工作。

    使用聚合可以避免分模塊開發時的一些問題,比如某個模塊更新了一些內容,但其它已經構建好的模塊不會進行更新,將所有模塊聚合之后,只對聚合模塊進行構建就會對所有模塊都進行構建,能夠及時的發現問題

    實現聚合

    聚合模塊也被稱為 root 模塊,同樣是一個只需要 pom.xml 文件的項目,只要設置了 modules 標簽,再將聚合的模塊添加進去,即可實現聚合

    <modules>
    	<!-- module 屬性中寫明被聚合模塊的相對路徑 -->
    	<module>../project-pojo</module>
    	<module>../project-dao</module>
    	<module>../project-service</module>
    </modules>

    如上例,將 pojo,dao 和 service 三個模塊進行了聚合,只要對聚合模塊進行構建,這三個模塊也會被一起構建

    聚合只體現在聚合模塊,被聚合的模塊也無法感知自身被誰所聚合

    三、繼承與聚合的合并

    繼承是的 parent 模塊和聚合時的 root 模塊都只有 pom.xml,因為他們都是設計型模塊,不包含實際的模塊內容。事實上,繼承與聚合經常被合并在一起使用,父模塊(parent)也作為聚合模塊(root)使用,只需要在父模塊中加入 modules 屬性,將子模塊聚合即可

    這時要說一說繼承時說到的 relativePath 屬性,前面說 relativePath 屬性可以省略,前提是父模塊已經構建并 install 至倉庫,否則子模塊無法構建,但此時父模塊同時也聚合了子模塊,要構建父模塊就又要一起構建子模塊,但構建子模塊又需要父模塊 install 至倉庫&hellip;&hellip;陷入了套娃問題

    此時構建父模塊 maven 會報錯: Non-resolvable parent POM for XXX.XXX.XXX Could not find artifact com.mzz:parent-maven:pom:1.0-SNAPSHOT and &lsquo;parent.relativePath&rsquo; points at wrong local POM,原因是無法定位 parent 模塊

    解決方法也很簡單,要么老老實實在子模塊中 parent 標簽中加入 relativePath 屬性,使 maven

    可以根據相對路徑找到父模塊,要么,先將父模塊中的 modules 注釋掉,暫時不做聚合,將父模塊 install 之后再取消注釋,然后就能一起構建啦

    感謝各位的閱讀,以上就是“Maven繼承與聚合的作用是什么”的內容了,經過本文的學習后,相信大家對Maven繼承與聚合的作用是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    马关县| 邢台县| 长子县| 中卫市| 保康县| 隆子县| 曲松县| 开原市| 大荔县| 娱乐| 汉中市| 曲松县| 岳普湖县| 遂昌县| 赤壁市| 南涧| 磴口县| 淳安县| 武陟县| 中宁县| 余庆县| 双流县| 安宁市| 碌曲县| 乃东县| 祁连县| 海口市| 许昌县| 巴林右旗| 桐柏县| 芦山县| 娱乐| 若羌县| 遵义市| 莱阳市| 漾濞| 都江堰市| 柳江县| 临汾市| 堆龙德庆县| 延川县|