(02)Maven子工程繼承父工程


  利用Maven可以對項目進行分模塊開發。那么怎樣把各個模塊整合到一起呢?這就利用了Maven繼承的特性。一般是每個模塊都繼承一個父工程。

  幾個注意的地方:

  (1)父工程的packaging是pom

  (2)父工程中定義屬性,子模塊不用定義,會繼承下來

  (3)父工程的依賴放在dependencyManagement中,這樣子模塊才能繼承父工程的依賴

  (4)父工程的pom.xml文件中定義了modules,整合子模塊的artifactId

  (5)子模塊的pom.xml文件中定義了parent標簽,里面是父工程的gav

  (6)子模塊只需定義自己的artifactId

  (7)子模塊如果繼承父工程的依賴可以不寫版本,但是如果父工程中沒有該依賴,那么子模塊必須寫完整的gav

  舉例說明:

  1、構建父工程

  父工程blog的pom.xml

<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.sl.edu</groupId> <artifactId>blog</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging>
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.0.4</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.31</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency> </dependencies> </dependencyManagement> <modules> <module>blog-api</module> <module>blog-admin</module> </modules> </project>

  2、構建子工程

  子模塊blog-api的pom.xml

<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>

    <parent><!-- 子類里面顯示聲明才能有明確的繼承表現,無意外就是父類的默認版本否則自己定義 -->
        <groupId>com.sl.edu</groupId>
        <artifactId>blog</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
<artifactId>blog-api</artifactId><!-- 當前Module自己叫什么名字 -->
<dependencies><!-- 當前Module需要用到的jar包,按自己需求添加,如果父類已經包含了,可以不用寫版本號 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
    </dependency>
  </dependencies>
</project>

  子模塊blog-admin的pom.xml

<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>

    <parent><!-- 子類里面顯示聲明才能有明確的繼承表現,無意外就是父類的默認版本否則自己定義 -->
        <groupId>com.sl.edu</groupId>
        <artifactId>blog</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <artifactId>blog-admin</artifactId><!-- 當前Module自己叫什么名字 -->

    <dependencies><!-- 當前Module需要用到的jar包,按自己需求添加,如果父類已經包含了,可以不用寫版本號 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
    </dependency>
  </dependencies> 
</project>

  注:如果用Eclipse開發,新建父工程選擇Maven Project;新建子模塊,右鍵父工程,選擇Maven Module,會自動生成一些配置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM