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

溫馨提示×

溫馨提示×

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

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

Maven項目繼承實現過程的案例分析

發布時間:2020-08-10 11:20:48 來源:億速云 閱讀:223 作者:小新 欄目:開發技術

這篇文章主要介紹Maven項目繼承實現過程的案例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

多個maven項目之間難免有重復的pom配置,重復的配置沒必要重復寫,maven提供了父子繼承的關系,重復的依賴直接放在父項目的pom中。

所以不希望每個開發者隨意定義maven版本依賴,可以在父項目中進行說明,然后子項目沿用即可。

idea創建父項目(這是一個父項目,也是一個空項目,只需要pom.xml,編寫相關的依賴, 父項目必須用pom打包的方式):

Maven項目繼承實現過程的案例分析

編輯父項目pom.xml

<&#63;xml version="1.0" encoding="UTF-8"&#63;>
<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.linewell</groupId>
  <artifactId>maven-parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!--父項目必須是pom-->
  <packaging>pom</packaging>

  <!--定義參數-->
  <properties>
    <common.version>2.6</common.version>
    <spring.version>4.3.6.RELEASE</spring.version>
  </properties>

  <!--這邊的依賴子項目會繼承-->
  <dependencies>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>${common.version}</version>
    </dependency>
  </dependencies>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>spring-context-support</groupId>
        <artifactId>org.springframework</artifactId>
        <version>${spring.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  
</project>

這邊需要說明下,dependencyManagement,這邊的依賴不會被繼承,如果子項目導入了這個依賴,可以不用寫版本號,會以父項目的為主,因為有的子項目不一定會用父項目中的所有依賴。個別子項目依賴到的包可以放在這里,然后不需要寫版本號,會自動引用父項目。

創建一個子項目,編輯子項目的pom.xml如下:

<&#63;xml version="1.0" encoding="UTF-8"&#63;>
<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.linewell</groupId>
  <artifactId>maven-children</artifactId>
  <version>1.0-SNAPSHOT</version>

  <parent>
    <groupId>com.linewell</groupId>
    <artifactId>maven-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../mavenparent/pom.xml</relativePath>
  </parent>

</project>

可以看到commons-io進來了,spring-context-support沒進來。

我現在不添加spring-context-support的版本,然后看下結果,是會以父項目的版本為主。可以看到如下引入的也是父項目中的4.3.6

<&#63;xml version="1.0" encoding="UTF-8"&#63;>
<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.linewell</groupId>
    <artifactId>maven-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../mavenparent/pom.xml</relativePath>
  </parent>

  <groupId>com.linewell</groupId>
  <artifactId>maven-children</artifactId>
  <version>1.0-SNAPSHOT</version>

  <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
    </dependency>
  </dependencies>
</project>

Maven項目繼承實現過程的案例分析

那么問題來了,如果子項目指定了版本會怎么樣?

編輯子項目pom.xml, 如下可以發現,如果子項目有明確指定依賴以及具體版本,與父項目發生沖突會以子項目的依賴為準。

<&#63;xml version="1.0" encoding="UTF-8"&#63;>
<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.linewell</groupId>
    <artifactId>maven-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../mavenparent/pom.xml</relativePath>
  </parent>

  <groupId>com.linewell</groupId>
  <artifactId>maven-children</artifactId>
  <version>1.0-SNAPSHOT</version>

  <dependencies>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.5</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>5.2.5.RELEASE</version>
    </dependency>
  </dependencies>

</project>

Maven項目繼承實現過程的案例分析

ps:如果父項目中執行了mvn install安裝到了本地倉庫,然后子項目中引入父GAV的時候可以不用寫路徑relativePath屬性。

以上是Maven項目繼承實現過程的案例分析的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

浮梁县| 扎兰屯市| 呈贡县| 商水县| 麦盖提县| 吕梁市| 喀什市| 汶川县| 钟山县| 涟水县| 水城县| 泰和县| 沾益县| 右玉县| 英山县| 乐至县| 富锦市| 成都市| 秀山| 太仆寺旗| 灵宝市| 马关县| 渝中区| 北京市| 德惠市| 五寨县| 乡宁县| 赤峰市| 宣化县| 昌宁县| 中牟县| 新密市| 高淳县| 花莲县| 平江县| 苏尼特左旗| 三台县| 宣城市| 迭部县| 南丹县| 汽车|