[置頂] Maven實(shí)戰(zhàn)----多模塊開發(fā)---缺少Jar包
來(lái)源:程序員人生 發(fā)布時(shí)間:2014-12-08 08:31:35 閱讀次數(shù):2438次
Maven里面的Jar包常常出現(xiàn)Missing的情況,無(wú)外乎幾種情況:
1、私服里面沒(méi)有相應(yīng)的版本號(hào)的Jar包或Jar包沒(méi)寫版本號(hào)
2、Jar包引錯(cuò)了,相應(yīng)的依賴關(guān)系也就錯(cuò)了
3、引入了依賴的Jar包,沒(méi)被管理起來(lái)
第12個(gè)問(wèn)題解決起來(lái)挺簡(jiǎn)單的,第3個(gè)問(wèn)題對(duì)不理解Maven的還需要解決1番。
其實(shí)第3個(gè)問(wèn)題就存在與Maven的<dependencies>節(jié)點(diǎn)與
<dependencymanagement>節(jié)點(diǎn)。
<dependencies>節(jié)點(diǎn)是項(xiàng)目依賴,項(xiàng)目所依賴的Jar包;
<dependencymanagement>節(jié)點(diǎn)是多模塊Maven項(xiàng)目開發(fā)的時(shí)候的依賴管理控制的。
在多模塊開發(fā)的時(shí)候,利用項(xiàng)目繼承可以將結(jié)構(gòu)信息、部署信息,將共同的依賴放在1個(gè)父類中。每一個(gè)子項(xiàng)目的pom繼承父類的pom中的依賴關(guān)系。這樣就解決了所有的子項(xiàng)目的依賴項(xiàng)統(tǒng)1版本。所以為了項(xiàng)目的正確運(yùn)行,必須讓而在父類中將這些Jar包管理起來(lái),在父項(xiàng)目的pom中定義共同的依賴關(guān)系。這就是依賴管理。
來(lái)看1下這兩個(gè)節(jié)點(diǎn)的代碼:
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>
區(qū)分:
<dependencies>中的jar直接加到項(xiàng)目中,管理的是依賴關(guān)系(如果有父pom,子pom,則子pom中只能被動(dòng)接受父類的版本);<dependencyManagement>主要管理版本,對(duì)子類繼承同1個(gè)父類是很有用的,集中管理依賴版本不添加依賴關(guān)系,對(duì)其中定義的版本,子pom不1定要繼承父pom所定義的版本。
生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)