1.maven是什麼?web
百度百科:spring
Maven是基於項目對象模型(POM),能夠經過一小段描述信息來管理項目的構建,報告和文檔的軟件項目管理工具。數據庫
2.maven的做用?apache
構建、文檔、報告、依賴、scms、發佈、分發,能夠方便的編譯代碼、進行依賴管理、管理二進制庫等等。spring-mvc
3.maven的好處?
緩存
目前我使用下來的好處tomcat
1.關於項目構建 很清晰,我目前的項目分的比較簡單 project-pom,project-intf,project-service,project-web,project-web-inmvc
project-pom 是父類pom,存了一些配置文件(開發,測試,生產),server的配置文件tomcat,統一tomcat配置框架
project-intf 第三方接口交互maven
project-service 系統dao,service
project-web 前臺
project-web-in 後臺
之前沒用maven前臺和後臺共用service,要寫2套攔截,如今單獨的項目,單獨的攔截,分的很清晰
2.關於文檔 暫時沒用到
3.關於報告 暫時沒用到
4.關於依賴 maven自動會幫你下載關聯的jar包-source包,這點很好,以前若是本身放到lib下,假設,spring-mvc須要3個 包,須要本身一個一個去下,如今直接依賴spring-mvc,系統自動下載其餘的jar,包括source.jar
5.關於發佈 未用maven以前,由於生產、測試、開發環境 數據庫配置、圖片存儲、文件存儲、接口都不同,因此每次打 包都須要手動改,每次發佈配置文件都有可能出錯,用了maven profile以後,只須要mvn package -P dev 不一樣的環境 就ok
6.關於編譯 經過指定maven插件的complier版本,能夠指定項目的編譯,運行環境,例如我指定pom的jdk爲1.6,那繼 承他的幾個子項目都是這個版本,統一開發、編譯環境
7.關於archetype 這個我我的比較喜歡,能夠實現基礎框架,相似代碼生成器,能夠把基礎的配置,環境生成好
下面總結一下,maven的具體一些概念
1.maven的座標 GAV
groupId: 定義當前maven項目所屬的實際項目,maven項目和實際項目不必定是一對一的關係,好比springframework,對應的maven項目有不少,例如spring-core,spring-context等
所以,一個項目每每會被劃分爲不少模塊。groupId一般域名相反,好比 org.springframework 下面有個spring項目,那groupId定義爲org.springframework.spring,域名是
spring.springframework.org
artifactId:該元素定義的是實際項目中的一個maven項目或者模塊,推薦的是使用實際項目做爲前綴,好比spring-webmvc
version:版本號。
packaging:包的類型,通常都是jar,也能夠是war之類的。若是不填,默認就是jar。
name和url,一個是名稱,一個是maven的地址。主要就是上面的幾個參數。
maven的安裝,不寫了,很簡單
關於maven的配置文件,我把默認的備份,將我用到的整理以下:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!--本地倉庫-->
<localRepository>d:/soft/maven/rep/m2</localRepository>
<!--鏡像-->
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/nexus/content/groups/public/</url>
</mirror>
</mirrors>
<!--本地nexus的用戶名 密碼-->
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus</id>
<name>Nexus</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!--啓用名稱爲nexus的私服 -->
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
maven的倉庫只有兩大類:1.本地倉庫 2.遠程倉庫,在遠程倉庫中又分紅了3種:2.1 中央倉庫 2.2 私服 2.3 其它公共庫
1.本地倉庫,顧名思義,就是Maven在本地存儲構件的地方。
注:maven的本地倉庫,在安裝maven後並不會建立,它是在第一次執行maven命令的時候才被建立
maven本地倉庫的默認位置:不管是Windows仍是Linux,在用戶的目錄下都有一個.m2/repository/的倉庫目錄,這就是Maven倉庫的默認位置
如何更改maven默認的本地倉庫的位置:這裏要引入一個新的元素:localRepository,它是存在於maven的settings.xml文件中
1.1 更改配置用戶範圍的本地倉庫:先在/.m2/目錄下建立settings.xml文件,而後在~/.m2/settings.xml,設置localRepository元素的值爲想要的倉庫地址
2. 遠程倉庫
2.1 說到遠程倉庫先從 最核心的中央倉庫開始,中央倉庫是默認的遠程倉庫,maven在安裝的時候,自帶的就是中央倉庫的配置
在maven的聚合與繼承中咱們說過,全部的maven項目都會繼承超級pom,具體的說,包含了下面配置的pom咱們就稱之爲超級pom
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>http://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
私服是一種特殊的遠程倉庫,它是架設在局域網內的倉庫服務,私服代理廣域網上的遠程倉庫,供局域網內的Maven用戶使用。當Maven須要下載構件的時候,它從私服請求,若是私服上不存在該構件,則從外部的遠程倉庫下載,緩存在私服上以後,再爲Maven的下載請求提供服務。咱們還能夠把一些沒法從外部倉庫下載到的構件上傳到私服上。
<mirrorOf>的值爲central,表示該配置爲中央倉庫的鏡像,任何對於中央倉庫的請求都會轉至該鏡像,用戶也可使用一樣的方法配置其餘倉庫的鏡像。另外三個元素id,name,url與通常倉庫配置無異,表示該鏡像倉庫的惟一標識符、名稱以及地址。相似地,若是該鏡像需認證,也能夠基於該id配置倉庫認證。
關於鏡像的一個更爲常見的用法是結合私服。因爲私服能夠代理任何外部的公共倉庫(包括中央倉庫),所以,對於組織內部的Maven用戶來講,使用一個私服地址就等於使用了全部須要的外部倉庫,這能夠將配置集中到私服,從而簡化Maven自己的配置。在這種狀況下,任何須要的構件均可以從私服得到,私服就是全部倉庫的鏡像。這時,能夠配置這樣的一個鏡像,如例:
1. <settings>
2. ...
3. <mirrors>
4. <mirror>
5. <id>internal-repository</id>
6. <name>Internal Repository Manager</name>
7. <url>http://localhost:8081/nexus/content/groups/public/</url>
8. <mirrorOf>*</mirrorOf>
9. </mirror>
10. </mirrors>
11. ...
12. </settings>
該例中<mirrorOf>的值爲星號,表示該配置是全部Maven倉庫的鏡像,任何對於遠程倉庫的請求都會被轉至http://localhost:8081/nexus/content/groups/public/
maven 基礎記錄完了
有問題,聯繫我 91559999或者jdk2010@163.com