目錄
maven的安裝不在這里講了,網(wǎng)上教程一大堆。
需要注意的:
(1).安裝完maven后建議更改本地倉庫的位置,在conf->setting.xml中修改
<localRepository></localRepository>
- 1
(2).maven的默認遠程倉庫位置在lib目錄下的maven-model-builder.jar的pom-4.0.0.xml中的
<repositories>
<repository>
<url>http://repo.maven./maven2</url>
</repository>
</repositories>
- 1
- 2
- 3
- 4
- 5
6月22日補充:這篇博客沒有寫如何具體創(chuàng)建maven父子工程,其實我本人也到網(wǎng)上看過很多創(chuàng)建父子工程的博客,大同小異但是有些許不同,觀察比較細的同學(xué)會發(fā)現(xiàn)有些文章比如idea是先創(chuàng)建空項目還是先創(chuàng)建maven工程但是不選擇骨架。比如eclipse子項目是創(chuàng)建maven project還是必須創(chuàng)建maven module。重點不在于你用哪種方式創(chuàng)建,重點是創(chuàng)建出來的項目要符合maven規(guī)范,如父項目package值為POM(哪怕你創(chuàng)建時候選錯了都可以自行到pom.xml中手動改,甚至你可以手動創(chuàng)建項目的目錄結(jié)構(gòu),目錄結(jié)構(gòu)你足夠熟悉就好。)
1.maven常用命令:
- 打包:mvn package (打包后放入target中)
- 編譯:mvn compile(會生成target目錄,并把編譯后的class放在classes中)
- 清空:mvn clean (清空target)
- 測試:mvn test (測試報告生成后存在target中,一般是三個文件)
- 安裝: mvn install (將項目安裝到本地倉庫中)
- 發(fā)布: mvn deploy (發(fā)不到私服)
2.maven依賴
(1).依賴是具有傳遞性的.
(2).依賴傳遞原則:層級相同時按引入順序傳遞,層級不同時按層級最短的傳遞
舉個栗子:
A->B->C->X(1.0)
A->D->X(2.0)
由于只能引入一個版本的包,此時Maven按照最短路徑選擇導(dǎo)入x(2.0)
A->B->X(1.0)
A->D->X(2.0)
路徑長度一致,則優(yōu)先選擇第一個,此時導(dǎo)入x(1.0)
還有resources也是可以傳遞的,當(dāng)然resources中的文件不涉及層級問題,所以resources是按照dependency順序引入的。當(dāng)然如果本項目中能匹配到的話優(yōu)先選擇本項目中的。
(3).scope標(biāo)簽的值會影響依賴,這里暫時先不展開了.
(4).排除依賴可以用
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
- 1
- 2
- 3
- 4
- 5
- 6
3.聚合
建立一個簡單項目artifactId為user-parent
<modules>
<module>../user-service</module>
<module>../user-core</module>
<module>../user-log</module>
</modules>
- 1
- 2
- 3
- 4
- 5
實現(xiàn)對三個項目的聚合,module標(biāo)簽中是其他項目的路徑.這樣所有項目都在通過操作父項目操作來實現(xiàn)了.
注意:modules的順序是不重要的,因為maven會自動根據(jù)依賴關(guān)系來拓撲排序.
4.繼承
子項目中添加:
<parent>
<groupId>cn.milo.user</groupId>
<artifactId>user-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 這里是要指到pom文件的 -->
<relativePath>../user-parent/pom.xml</relativePath>
</parent>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
6月22日補充:這里講一下relativePath標(biāo)簽,如果不寫這個標(biāo)簽,子項目會默認在子項目pom.xml的父目錄中查找pom.xml,沒有找到的話會依次到本地倉庫,遠程倉庫中找對應(yīng)的父項目并找到對應(yīng)的pom.xml.所以協(xié)同開發(fā)的話父項目要先deploy到私有倉庫.私有倉庫用法參照 : maven入門:nexus安裝與使用(二)
父項目中添加依賴管理:
<!-- 依賴管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
</dependencyManagement>
父項目中添加依賴管理:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
如上配置后子項目添加父項目中的jar包就不需要寫version標(biāo)簽了