[置頂] Maven實戰----多模塊開發---缺少Jar包
來源:程序員人生 發布時間:2014-12-08 08:31:35 閱讀次數:2449次
Maven里面的Jar包常常出現Missing的情況,無外乎幾種情況:
1、私服里面沒有相應的版本號的Jar包或Jar包沒寫版本號
2、Jar包引錯了,相應的依賴關系也就錯了
3、引入了依賴的Jar包,沒被管理起來
第12個問題解決起來挺簡單的,第3個問題對不理解Maven的還需要解決1番。
其實第3個問題就存在與Maven的<dependencies>節點與
<dependencymanagement>節點。
<dependencies>節點是項目依賴,項目所依賴的Jar包;
<dependencymanagement>節點是多模塊Maven項目開發的時候的依賴管理控制的。
在多模塊開發的時候,利用項目繼承可以將結構信息、部署信息,將共同的依賴放在1個父類中。每一個子項目的pom繼承父類的pom中的依賴關系。這樣就解決了所有的子項目的依賴項統1版本。所以為了項目的正確運行,必須讓而在父類中將這些Jar包管理起來,在父項目的pom中定義共同的依賴關系。這就是依賴管理。
來看1下這兩個節點的代碼:
Project A
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>maven</groupId>
<artifactId>A</artifactId>
<packaging>pom</packaging>
<name>A</name>
<version>1.0</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>test</groupId>
<artifactId>a</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>test</groupId>
<artifactId>b</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>test</groupId>
<artifactId>c</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>test</groupId>
<artifactId>d</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
Project B
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>maven</groupId>
<artifactId>B</artifactId>
<packaging>pom</packaging>
<name>B</name>
<version>1.0</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>maven</groupId>
<artifactId>A</artifactId>
<version>1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>test</groupId>
<artifactId>d</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>test</groupId>
<artifactId>a</artifactId>
<version>1.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>test</groupId>
<artifactId>c</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
</project>
區分:
<dependencies>中的jar直接加到項目中,管理的是依賴關系(如果有父pom,子pom,則子pom中只能被動接受父類的版本);<dependencyManagement>主要管理版本,對子類繼承同1個父類是很有用的,集中管理依賴版本不添加依賴關系,對其中定義的版本,子pom不1定要繼承父pom所定義的版本。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈