<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                一、為什么要聚合? 1、項目分模塊開發,如果模塊較多,在執行clean、package等構建相關操作時,費事費力!也不符合maven的自動化管理初衷,所以利用聚合可以管理多個模塊的操作。 2、聚合模塊和子模塊的目錄:他們可以是父子類(上下級目錄),也可以是平行結構,當然如果使用平行結構,那么聚合模塊的POM也需要做出相應的更改。 二、為什么需要繼承 多模塊那就是不同的組甚至是不同的部門來開發,比如junit依賴的version 很有可能就會不一樣,但是為了項目后期維護以及項目人員調度盡可能的方便,我們需要將junit的版本設為統一的。所以就需要有一個機制來給統一這個標準,maven提供了一種機制就是 繼承。繼承可以提供對多模塊的管理,提高復用性! 通過定義一個父工程,并且在該父工程的 pom 文件中使用 dependencyManagement來聲明junit的統一version 父工程的pom.xml ``` <?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> <groupId>com.javxuam.maven</groupId> <artifactId>MavenProject</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement> </project> ``` 2.A模塊繼承父工程pom.xml,定義junit依賴時候不聲明version,去除A中pom.xml 與父工程pom.xml中重復的部分 ``` <?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> <artifactId>MavenProject</artifactId> <groupId>com.javxuam.maven</groupId> <version>1.0-SNAPSHOT</version> <!--最好聲明一下以當前pom文件目錄為基準 的父工程的pom文件--> <relativePath>../pom.xml</relativePath> </parent> <modelVersion>4.0.0</modelVersion> <!--本來A模塊也是需要 三點確定的, 但是 groupId 與version與父工程的相同 所以去掉,不去掉也不會報錯--> <groupId>com.javxuam.maven</groupId> <artifactId>A</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <!--不聲明version--> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.2.6.RELEASE</version> </dependency> </dependencies> </project> ``` 同樣給 B,C模塊繼承父模塊,再查看A,B,C三個模塊的junit依賴 ![](https://box.kancloud.cn/99509d493bfdd8ee21b0ea966dc1fe3e_358x530.png) 至此 繼承就解決了 統一依賴版本的問題。 2.聚合 聚合在java 中是在A對象功能完整需要 另外B對象來實現,所以A類中有著B類對象的引用,但是A對象的生命周期結束,B對象依然可以存在,簡而言之就兩個對象的生命周期不同。當然在maven中,聚合又是為了解決另外一個問題而存在的一種機制。通常我們的項目都是都模塊的,而每個模塊又是一個 maven項目,所以每次開發完了編譯都需要一個一個模塊的去執行,這就違背了maven的自動化理念。 所以聚合應運而生,具體做法: ``` <?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> <groupId>com.javxuam.maven</groupId> <artifactId>MavenProject</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>A</module> <module>B</module> <module>C</module> <module>D</module> <module>WebProject</module> </modules> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement> </project> ``` 然后執行一下 父模塊的 clean 看 A,B,C,D模塊是否也會一起clean ![](https://box.kancloud.cn/b26614bdb25ca4a8395c21544327bb8f_1328x434.png) 從圖中可以看出所有的模塊都執行了clean,這就避免了一個一個模塊的clean操作了。 3 繼承與聚合容易混淆的點 3.1 子模塊并不一定是父項目的子模塊(子模塊只是一種稱呼,并不一定真的是有繼承關系的) 如:A項目下有 a,b,c三個子模塊 A項目的pom.xml ``` <modules> <module>a</module> <module>b</module> <module>c</module> </modules> ``` a,b,c項目的pom.xml不一定有如下定義 ``` <parent> <artifactId>A</artifactId> <groupId>com.javxuam.maven</groupId> <version>1.0-SNAPSHOT</version> <!--最好聲明一下以當前pom文件目錄為基準 的父工程的pom文件--> <relativePath>../pom.xml</relativePath> </parent> ``` 3.2 聚合的目的只是為了把大型分模塊項目的 clean package test等操作的簡化, 有了聚合 對頂級項目 執行 mvn clean ,package等命令時 下的子模塊 也會自動執行 借鑒:https://blog.csdn.net/u014297148/article/details/79939656
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看