Maven(約束大於配置)html
一:Maven簡介
一、Maven是什麼?
是一個跨平臺的項目管理工具。使用java語言開發(Maven 3.3+ require JDK 1.7 or above to execute)
二、 爲何使用Maven?
2.1 Maven主要有兩大功能:依賴管理、項目構建。
依賴能夠理解成jar包。
項目構建包括如下環節:清理、編譯、測試、報告、打包、部署
項目構建的方式對好比下:eclipse ant maven
eclipse:使用eclipse進行項目的構建,相對來講,步驟零散,很差操做
ant:是一個專門的項目構建工具,經過一些配置來完成項目構建,這些配置要明確的告訴ant,源碼包在哪?目標class文件應存放在哪?資源文件應該在哪?
maven:是一個項目管理工具,經過使用maven,能夠對項目進行快速簡單的構建,不須要告訴maven不少信息,但須要按照maven的規範去進行代碼的開發,也就是說maven是有約束的。
2.2 官網地址和官方包目錄結構
官網: http://maven.apache.org
maven官方壓縮包的目錄結構java
二:配置Maven運行環境
一、配置Maven環境變量(MAVEN_HOME和path)
測試maven是否安裝成功:在系統命令行中執行mvn -v
二、配置settings.xml
本地倉庫與中央倉庫web
2.2本地倉庫與中央倉庫
默認本地倉庫存放位置是在系統用戶目錄下的.m2/repository中。由於倉庫很大,最好不要放在C盤,從新指定存放目錄。將安裝包中conf目錄下的settings.xml拷貝到.m2目錄下,並修改上面標籤。如:
<localRepository>D:/MavenForRepository</localRepository>
注意:默認.m2目錄不存在,由於沒有執行任何maven相關命令,在命令窗口中執行 mvn help:system 命令,則自動生成.m2目錄
2.3JDK版本配置
默認maven的jdk編譯版本不是本身安裝的1.8版本。須要進行版本配置,修改settings.xml 以下
2.4mirror 鏡像配置
鏡像就至關因而中央倉庫的一個副本,內容和中央倉庫徹底同樣。目前有很多國內鏡像,其中阿里雲算是比較穩定的,同時也能保證下載速度數據庫
修改settings.xml以下:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>apache
三:Maven項目的生命週期
在maven中存在"三套"生命週期,每一套生命週期相互獨立,互不影響。在一套生命週期內,執行後面的命令則前面操做會自動執行。
CleanLifeCycle:清理生命週期
clean
DefaultLifeCycle:默認生命週期
compile、test、package、install、deploy
SiteLifeCycle:站點生命週期
site(生成html文檔描述項目的一些信息)api
四:eclipse集成Maven
第一步:安裝m2e插件。將插件拷貝到eclipse的dropins目錄下,重啓Eclipse
第二步:設置maven的安裝路徑(maven解壓路徑)
第三步:修改User Settings 指定本地倉庫(settings.xml本地倉庫修改後,必須先執行updata settings)tomcat
五:Maven項目之間的關係
一、依賴[具備傳遞性]
在工程之中須要依賴各類各樣的jar包,也可能須要依賴其餘的maven工程打包好的包。這個時候就須要在pom.xml中使用依賴關係進行配置。
例子:讓Maven02項目依賴與Maven01項目,在Maven02項目添加Maven01的座標信息
方法一:進入Maven01項目中複製gav座標信息到Maven02項目中
方法二:選中Maven02項目右擊 =>Maven =>Add Dependency =>OK 自動生成maven01項目的gav座標
二、繼承
繼承爲了消除重複,咱們把不少相同的配置提取出來。因此maven提供了一個父類maven項目(新建類型爲pom的maven工程Parent)來裝全部公共使用的jar,只要繼承均可以使用。
例子:讓Maven02項目繼承Maven03項目,在Maven02項目添加Maven03的座標信息oracle
三、聚合(拆分:將每一層代碼放到一個工程裏面,下降耦合度,提升可複用性,爲其餘工程依賴。而後對拆分後的項目進行聚合)
若是咱們想一次構建多個項目模塊,那咱們就須要對多個項目模塊進行聚合。這樣作,咱們只須要對父工程進行mvn install命令,它就會依次把繼承依賴的全部工程都自動執行mvn compile test package install命令了。
建立好的父工程目錄中只有pom.xml,能夠判斷出父工程不進行編碼。
父工程的做用:項目須要的依賴信息在父工程的pom文件中定義,子模塊繼承便可將子模塊聚合到一塊兒app
六:建立War類型Maven項目
一、選擇simple project 進行建立 =>打包方式選擇war
二、添加web.xml =>webapp下eclipse
方法一:從之前的項目拷貝web.xml
方法二:手動建立 =>建立文件夾WEB-INF,添加web.xml
方法三:選中項目右擊 =>Java EE Tools =>Generte Deployment Descriptor Stub(自動生成web.xml)
添加web.xml後報錯信息就自動消失了
三、war項目運行時必須依賴的幾個jar,否則jsp頁面建立出來就會報錯
在項目的pom.xml文件中添加一些必要的依賴jar =>servlet and jsp
保存後就報錯信息自動消失
四、<dependency> 標籤
依賴servlet-api時須要配置<scope>
五、<scope>四個屬性
依賴範圍scope(compile\test\provided\runtime)
說明:若是使用到tomcat自帶jar包,將項目中依賴範圍設置成provided
六、運行項目
maven項目能夠在本地tomcat中運行,也能夠在pom.xml中添加tomcat插件,配置插件內容,並運行。編寫一個jsp頁面,查看運行效果。
運行:選中項目=>Run As =>Maven build..
觀察控制檯Tomcat加載信息
Google運行 http://localhost:8080/
七:建立聚合項目
一、不是寫Maven必定須要寫聚合項目,只是經過聚合項目來演示SSM搭建過程。具體根據需求來肯定Maven項目的粒度
二、項目結構
例子:改造ssm整合項目成maven聚合項目
1:首先建立一個父工程,打包方式選擇pom
2:選擇父工程 =>建立子模塊 =>Maven Module =>打包方式除controller打包成war,外其餘的都是jar
2-1:pojo
2-2:mapper(會報錯,mapper須要依賴pojo)
注意:mapepr操做的是持久層,須要導入一些配置文件等
2-3:service
2-4:controller(打包方式建立成war)
web.xml 一些跳轉jsp頁面
所有完成後打開父項目的pom.xml文件會多出<modules>標籤
3:運行項目(controller 或者 parent)
選中ssm-parent =>Run As =>Maven install 存放一份到本地倉庫 出現如下截圖就說明構建項目成功
若是出現報錯信息下圖
就去把Installed JREs =>換成JDK =>從新Maven install
4:運行maven項目(Run As =>Maven build..)
觀察console =>Google運行測試 =>數據庫確認
八:私服安裝及應用
一、私服安裝
1.1下載安裝包
1.2進入解壓後的bin目錄下,打開命令窗口,輸入命令:nexus.exe /run 運行(注意目錄中不能有中文)
1.3訪問私服 http://localhost:8081/ 登陸私服:admin/admin123 默認用戶名和密碼
二、私服倉庫類型
Hosted:宿主倉庫。存放本公司開發的jar包(正式版本、測試版本、第三方:存在版權問題的jar包,例如oracle)
Proxy:代理倉庫。代理中央倉庫、Apache測試版本的jar包。
Group:組倉庫。包含宿主倉庫和代理倉庫。組倉庫比較經常使用
三、上傳本地jar包到私服(會應用)
3.1認證:在C:\Users\Administrator\.m2目錄下的settings.xml中配置用戶名和密碼
<!-- server的帳戶 -->
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
3.2配置jar包上傳路徑:在須要上傳的項目的pom.xml中進行配置
3.3執行maven的deploy命令發佈項目到私服(上傳)
四、下載jar包到本地倉庫(會應用)
4.1 配置鏡像:在C:\Users\Administrator\.m2目錄下的settings.xml中配置
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<!-- 私服上組倉庫的url地址 -->
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
4.2 配置模板:在C:\Users\Administrator\.m2目錄下的settings.xml中配置
<activeProfiles>
<!—激活上面配置的模板-->
<activeProfile>dev</activeProfile>
</activeProfiles>