Maven實戰(二)---多模組開發---缺少Jar包
阿新 • • 發佈:2019-02-18
Maven裡面的Jar包經常出現Missing的情況,無外乎幾種情況:
1、私服裡面沒有相應的版本號的Jar包或者Jar包沒寫版本號
2、Jar包引錯了,相應的依賴關係也就錯了
3、引入了依賴的Jar包,沒被管理起來
第一二個問題解決起來挺簡單的,第三個問題對於不理解Maven的還需要解決一番。
其實第三個問題就存在與Maven的<dependencies>節點與<dependencymanagement>節點。
<dependencies>節點是專案依賴,專案所依賴的Jar包;
<
在多模組開發的時候,利用專案繼承可以將結構資訊、部署資訊,將共同的依賴放在一個父類中。每個子專案的pom繼承父類的pom中的依賴關係。這樣就解決了所有的子專案的依賴項統一版本。所以為了專案的正確執行,必須讓而在父類中將這些Jar包管理起來,在父專案的pom中定義共同的依賴關係。這就是依賴管理。
來看一下這兩個節點的程式碼:
Project AProject B<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> <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>主要管理版本,對於子類繼承同一個父類是很有用的,集中管理依賴版本不新增依賴關係,對於其中定義的版本,子pom不一定要繼承父pom所定義的版本。