小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Maven 基礎(chǔ)知識(shí)(一)工程結(jié)構(gòu)

 路人甲Java 2021-06-30

maven工程結(jié)構(gòu)分為繼承和集合,通過繼承可以讓多個(gè)子模塊共享配置在父模塊中的配置信息,通過集合可以讓我們?cè)诟改K執(zhí)行命令時(shí),遞歸的對(duì)子模塊進(jìn)行相同的處理。

下面以模塊com.mycompany.app:my-app:1

<project>
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1</version>
</project>

和模塊com.mycompany.app:my-module:1為例來進(jìn)行說明

<project>
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-module</artifactId>
  <version>1</version>
</project>

  1. 繼承,通過在子模塊中指定<parent>元素來實(shí)現(xiàn)

    1. 場(chǎng)景1:子模塊所在的目錄是父模塊的子目錄

      .
       |-- my-module
       |   `-- pom.xml
       `-- pom.xml
      
      
      • 其中my-module/pom.xmlcom.mycompany.app:my-module:1的POM,pom.xmlcom.mycompany.app:my-app:1的POM

      為了把my-app變成my-module的父模塊,可按如下修改my-module/pom.xml

      <project>
        <modelVersion>4.0.0</modelVersion>
       
        <parent>
          <groupId>com.mycompany.app</groupId>
          <artifactId>my-app</artifactId>
          <version>1</version>
        </parent>
       
        <artifactId>my-module</artifactId>
      </project>
      
      
      • 在子模塊中追加了<parent>元素
      • 去除了my-module/pom.xml中的<groupId><version>,默認(rèn)使用從父模塊繼承到的屬性值
    2. 場(chǎng)景2: 子模塊所在目錄不是父模塊的子目錄

       |-- my-module
       |   `-- pom.xml
       `-- parent
           `-- pom.xml
      
      
      • 其中parent/pom.xmlcom.mycompany.app:my-app:1的POM,這個(gè)例子也告訴我們工程目錄名parentartifactId的值可以不一樣,但在實(shí)際應(yīng)用中,我們一般會(huì)保持目錄名和artifactId一致,這里只是為了說明my-app是父模塊

      為了把my-app變成my-module的父模塊,可按如下修改my-module/pom.xml

      <project>
        <modelVersion>4.0.0</modelVersion>
       
        <parent>
          <groupId>com.mycompany.app</groupId>
          <artifactId>my-app</artifactId>
          <version>1</version>
          <relativePath>../parent/pom.xml</relativePath>
        </parent>
       
        <artifactId>my-module</artifactId>
      </project>
      
      
      • <parent>元素中追加<relativePath>,相對(duì)路徑的起始目錄是當(dāng)前子模塊的路徑
    3. 場(chǎng)景3: 父工程在鏡像倉(cāng)庫(kù)中

      <project>
        <modelVersion>4.0.0</modelVersion>
       
        <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.3.2.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>my-module</artifactId>
        <version>0.0.1-SNAPSHOT</version>
      </project>
      
      

    通過繼承,子模塊可以從父模塊繼承到如下元素

    groupId  
    version
    description
    url
    inceptionYear
    organization
    licenses
    developers
    contributors
    mailingLists
    scm
    issueManagement
    ciManagement
    properties
    dependencyManagement
    dependencies
    repositories
    pluginRepositories
    build
    plugin executions with matching ids
    plugin configuration
    etc.
    reporting
    profiles
    
    
  2. 聚集,通過在父模塊中指定<modules>

    一個(gè)模塊設(shè)定到父模塊的<modules>后,當(dāng)在父模塊執(zhí)行maven命令時(shí),將在所有子模塊中遞歸執(zhí)行

    通過以下兩步可以將子模塊聚集到父模塊中

    • 將父模塊pom.xml中的<packaging>屬性值設(shè)置成pom
    • 在父模塊中的<modules>元素中指定子模塊的路徑
    1. 場(chǎng)景1:子模塊所在的目錄是父模塊的子目錄

      .
       |-- my-module
       |   `-- pom.xml
       `-- pom.xml
      
      
      • 其中my-module/pom.xmlcom.mycompany.app:my-module:1的POM,pom.xmlcom.mycompany.app:my-app:1的POM

      為了把my-module聚集到my-app模塊下,可按如下修改my-app/pom.xml文件

      <project>
        <modelVersion>4.0.0</modelVersion>
       
        <groupId>com.mycompany.app</groupId>
        <artifactId>my-app</artifactId>
        <version>1</version>
        <packaging>pom</packaging>
       
        <modules>
          <module>my-module</module>
        </modules>
      </project>
      
      
      • 追加<packaging>pom</packaging>,默認(rèn)是jar
      • 追加<modules>,其中<module>中指定子模塊的目錄位置,是一個(gè)相對(duì)路徑,起始路徑是父模塊的目錄
    2. 場(chǎng)景2:子模塊所在的目錄不是父模塊的子目錄

      .
       |-- my-module
       |   `-- pom.xml
       `-- parent
           `-- pom.xml
      
      • 其中parent/pom.xmlcom.mycompany.app:my-app:1的POM

      通過相對(duì)路徑把把my-module聚集到my-app模塊下

      <project>
        <modelVersion>4.0.0</modelVersion>
       
        <groupId>com.mycompany.app</groupId>
        <artifactId>my-app</artifactId>
        <version>1</version>
        <packaging>pom</packaging>
       
        <modules>
          <module>../my-module</module>
        </modules>
      </project>
      
      
  3. 繼承 VS 聚集

    當(dāng)有多個(gè)maven工程,如果想實(shí)現(xiàn)所有工程共享一些配置信息,可以采用 繼承 的模式,把公共信息配置到一個(gè)工程里,再把其他的工程中的<parent>指向這個(gè)工程。

    如果想實(shí)現(xiàn)對(duì)一批maven工程,同時(shí)進(jìn)行編譯、發(fā)布等操作,可以采用 聚集 的模式,創(chuàng)建一個(gè)parent工程,把這一批工程都作為parent工程的<modules>,這樣我們對(duì)父工程進(jìn)行操作時(shí),就可以遞歸的對(duì)所有module進(jìn)行處理。

    當(dāng)然我們也可以同時(shí)使用繼承 聚集,即在子模塊中指定<parent>,同時(shí)也在父模塊中指定<modules>

    按如下模塊路徑舉例:

    .
     |-- my-module
     |   `-- pom.xml
     `-- parent
         `-- pom.xml
    
    
    • my-module/pom.xmlcom.mycompany.app:my-module:1的POM
    • parent/pom.xmlcom.mycompany.app:my-app:1的POM

    此時(shí),為了同時(shí)利用繼承和聚集,可做如下修改

    com.mycompany.app:my-app:1的POM

    <project>
      <modelVersion>4.0.0</modelVersion>
     
      <groupId>com.mycompany.app</groupId>
      <artifactId>my-app</artifactId>
      <version>1</version>
      <packaging>pom</packaging>
     
      <modules>
        <module>../my-module</module>
      </modules>
    </project>
    
    

    com.mycompany.app:my-module:1的POM

    <project>
      <modelVersion>4.0.0</modelVersion>
     
      <parent>
        <groupId>com.mycompany.app</groupId>
        <artifactId>my-app</artifactId>
        <version>1</version>
        <relativePath>../parent/pom.xml</relativePath>
      </parent>
     
      <artifactId>my-module</artifactId>
    </project>
    
    

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多