Maven實戰(二)---多模塊開發---缺少Jar包

Maven裏面的Jar包經常出現Missing的情況,無外乎幾種情況:

1、私服裏面沒有相應的版本號的Jar包或者Jar包沒寫版本號

2Jar包引錯了,相應的依賴關係也就錯了

3、引入了依賴的Jar包,沒被管理起來


       第一二個問題解決起來挺簡單的,第三個問題對於不理解Maven的還需要解決一番。

       其實第三個問題就存在與Maven<dependencies>節點與<dependencymanagement>節點。

                     <dependencies>節點是項目依賴,項目所依賴的Jar包;

                    <dependencymanagement>節點是多模塊Maven項目開發的時候的依賴管理控制的。

         在多模塊開發的時候,利用項目繼承可以將結構信息、部署信息,將共同的依賴放在一個父類中。每個子項目的pom繼承父類的pom中的依賴關係。這樣就解決了所有的子項目的依賴項統一版本。所以爲了項目的正確運行,必須讓而在父類中將這些Jar包管理起來,在父項目的pom中定義共同的依賴關係。這就是依賴管理。

 

來看一下這兩個節點的代碼:

Project A

  1. <project>  
  2.  <modelVersion>4.0.0</modelVersion>  
  3.  <groupId>maven</groupId>  
  4.  <artifactId>A</artifactId>  
  5.  <packaging>pom</packaging>  
  6.  <name>A</name>  
  7.  <version>1.0</version>  
  8.  <dependencyManagement>  
  9.    <dependencies>  
  10.      <dependency>  
  11.        <groupId>test</groupId>  
  12.        <artifactId>a</artifactId>  
  13.        <version>1.2</version>  
  14.      </dependency>  
  15.      <dependency>  
  16.        <groupId>test</groupId>  
  17.        <artifactId>b</artifactId>  
  18.        <version>1.0</version>  
  19.        <scope>compile</scope>  
  20.      </dependency>  
  21.      <dependency>  
  22.        <groupId>test</groupId>  
  23.        <artifactId>c</artifactId>  
  24.        <version>1.0</version>  
  25.        <scope>compile</scope>  
  26.      </dependency>  
  27.      <dependency>  
  28.        <groupId>test</groupId>  
  29.        <artifactId>d</artifactId>  
  30.        <version>1.2</version>  
  31.      </dependency>  
  32.    </dependencies>  
  33.  </dependencyManagement>  
  34. </project>  


Project B

  1. <project>  
  2.   <modelVersion>4.0.0</modelVersion>  
  3.   <groupId>maven</groupId>  
  4.   <artifactId>B</artifactId>  
  5.   <packaging>pom</packaging>  
  6.   <name>B</name>  
  7.   <version>1.0</version>  
  8.   <dependencyManagement>  
  9.     <dependencies>  
  10.       <dependency>  
  11.         <groupId>maven</groupId>  
  12.         <artifactId>A</artifactId>  
  13.         <version>1.0</version>  
  14.         <type>pom</type>  
  15.         <scope>import</scope>  
  16.       </dependency>  
  17.       <dependency>  
  18.         <groupId>test</groupId>  
  19.         <artifactId>d</artifactId>  
  20.         <version>1.0</version>  
  21.       </dependency>  
  22.     </dependencies>  
  23.   </dependencyManagement>  
  24.   <dependencies>  
  25.     <dependency>  
  26.       <groupId>test</groupId>  
  27.       <artifactId>a</artifactId>  
  28.       <version>1.0</version>  
  29.       <scope>runtime</scope>  
  30.     </dependency>  
  31.     <dependency>  
  32.       <groupId>test</groupId>  
  33.       <artifactId>c</artifactId>  
  34.       <scope>runtime</scope>  
  35.     </dependency>  
  36.   </dependencies>  
  37. </project>  

區別:

         <dependencies>中的jar直接加到項目中,管理的是依賴關係(如果有父pom,pom,則子pom中只能被動接受父類的版本);<dependencyManagement>主要管理版本,對於子類繼承同一個父類是很有用的,集中管理依賴版本不添加依賴關係,對於其中定義的版本,子pom不一定要繼承父pom所定義的版本。

發佈了6 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章