文章大綱
一、maven功能介紹
二、maven整合javaweb案例
三、私服應用(了解)
四、總結
五、相關資料下載
六、參考文章

一、maven功能介紹
1. maven基本介紹
Maven的Apache公司開源項目,是項目構建工具。用來依賴管理。
1.1 maven的好處
使用傳統項目開發crm項目,項目大小:

同樣的項目使用maven開發

同樣的代碼,實現功能都一樣,maven項目如何做到的?可以初步推斷maven項目中一定沒有jar包。沒有jar包的maven項目如何運行?
Maven項目找jar包過程:

1.2 maven的好處
maven的兩大核心:
依賴管理:對jar包管理過程
項目構建:項目在編碼完成后,對項目進行編譯、測試、打包、部署等一系列的操作都通過命令來實現
通過maven命令將web項目發布到tomcat:

溫馨提示:使用myeclipse或者IDEA時,maven命令無需出現mvn,直接tomcat:run即可。
1.3 Maven工程的分類
打包方式
常見:jar、war、pom
Jar包
編譯完成,打包
會打成一個JAR包,用作jar包使用
war包
是一個Web工程
發布在服務器上的工程,比如,網站或服務
將來我們會將所有的JAR包,打到一起
打到一個war包里面,可以部署到Tomcat上
Pom
聚合工程
一般都是父工程,管理jar包的版本、maven插件的版本、統一的依賴管理
Pom工程中,至少要有一個war包
2. maven安裝、配置本地倉庫
maven程序安裝前提:maven程序java開發,它的運行依賴jdk。
2.1 maven的下載安裝
下載安裝包

解壓到本地磁盤(解壓目錄不要有中文,空格)

配置環境變量,Jdk環境變量:JAVA_HOME

將maven_home環境變量配置到path環境變量中

查詢maven的版本信息:

2.2 配置本地倉庫
本地倉庫是指jar包存放的文件夾

2.3 maven配置中央倉庫,阿里雲倉庫地址
使用maven自帶的中央倉庫地址很慢,所以我們可以改成國內的地址,比如阿里雲,jar包下載到本地倉庫的速度就會快很多,具體配置如下:
打開maven安裝目錄conf下的settings.xml文件,大概在145行找到<mirrors>下添加以下代碼:
<mirror> <id>maven.net.cn</id> <mirrorOf>central</mirrorOf> <name>central mirror in china</name> <url>http://maven.net.cn/content/groups/public</url> </mirror>
3. maven項目標准目錄結構

對項目中文件進行細分:

4. maven的常用命令(熟練掌握)
4.1 clean:清理
將項目根目錄下target目錄清理掉。
4.2 compile:編譯
將項目中.java文件編譯為.class文件
4.3 test:單元測試
單元測試類名有要求:XxxxTest.java
將項目根目錄下src/test/java目錄下的單元測試類都會執行。
4.4 package:打包
web project ---- war包
java project -----jar包
將項目打包,打包項目根目錄下taget目錄
4.5 install:安裝
解決本地多個項目公用一個jar包。
打包到本地倉庫
4.6 溫馨提示
使用myeclipse或者IDEA時,maven命令無需出現mvn,直接tomcat:run即可。
5 . 依賴范圍(了解)

依賴范圍:默認是compile
如果將servlet-api.jar設置為compile,打包后包含serlvet-api.jar,war包部署到tomcat跟tomcat中存在servlet-api.jar包沖突。導致運行失敗。
如果使用到tomcat自帶jar包,將項目中依賴作用范圍設置為:provided,其他可以默認
6. 傳遞依賴沖突解決(掌握)
6.1 依賴傳遞規則介紹
傳遞依賴:A(項目)依賴B,B依賴C(1.1版本),B是A的直接依賴,C就是A的傳遞依賴
導入依賴D,D依賴C(1.2版本)
6.2 Maven自己調解原則
第一聲明者優先原則
誰先定義的就用誰的傳遞依賴。
路徑近者優先原則
直接依賴級別高於傳遞依賴。
6.3 排除依賴
方法一:


方法二:版本鎖定(推薦使用)

二、maven整合javaweb案例
1. maven整合web項目案例(熟練掌握)
1.1 配置eclipse中maven環境
配置m2e插件,Mars2版本自帶maven插件
需要配置maven程序

配置userSetting:讓eclipse知道maven倉庫位置

1.2 創建maven的javaweb項目



創建好的web項目,可能出現以下錯誤:
(1)web.xml缺失

(2)jdk編譯版本1.5,在pom.xml中添加插件

(3)創建servlet,serlvet編譯報錯,原因:缺失servlet-api-xx.jar包

1.3 maven命令運行項目

2. maven對項目進行拆分、聚合(熟練掌握)
2.1 拆分、聚合基本介紹
對現在已有maven ssh項目進行拆分,拆分思路:將dao層的代碼已經配置文件全體提取出來到一個表現上獨立的工程中。同樣service、action拆分。
ssh-parent: 父工程
ssh-dao:(子模塊)
ssh-service
ssh-web
拆分完成對拆分后的項目進行聚合,提出概念父工程
2.2 創建父工程


創建好父工程目錄結構:只有pom.xml,可以推斷父工程不進行編碼。
(1)項目需要的依賴的信息,在父工程中定義,子模塊繼承過程
(2)將各個子模塊聚合到一起
2.3 將創建父工程發布到本地倉庫
將父工程發布到本地倉庫后,其他的字工程才能繼承使用
2.4 創建子模塊ssh-dao
溫馨提示:子模塊需要右鍵父項目新建Module。
ssh-dao負責數據訪問層:包含dao相關代碼&配置文件


創建之后,將ssh-dao發布到本地倉庫,給2.5的ssh-service進行依賴
2.5 創建子模塊ssh-service


將ssh-service工程打包到本地倉庫,給2.6的ssh-web項目添加依賴
2.6 創建子模塊ssh-web:war

在ssh-web項目中添加service工程依賴。
2.7 運行方式
Maven方式:
方式1:運行父工程。父工程將各個子模塊聚合到一起。將ssh-web打war包發布到tomcat
方式2:直接運行web工程
其他方式:部署到tomcat
三、私服應用(了解)

1. 私服安裝
下載安裝包

解壓到本地磁盤

使用管理員權限打開dos,在dos下執行命令安裝私服

啟動服務

找到私服的訪問url
2. 私服倉庫類型

Hosted:宿主倉庫
存放本公司開發的jar包(正式版本、測試版本、第三方:存在版權問題--Oracle)
Proxy:代理倉庫
代理中央倉庫、Apache下測試版本的jar包
Group:組倉庫
將來連接組倉庫。包含Hosted:宿主倉庫,Proxy:代理倉庫
3. 上傳jar包到私服上(應用)
在maven目錄下conf/settings.xml.認證:配置用戶名密碼
<server> <id>releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server>

在將要上傳的項目的pom.xml中配置jar包上傳路徑url
<distributionManagement> <repository> <id>releases</id> <url>http://localhost:8081/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <id>snapshots</id> <url>http://localhost:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement>

執行命令發布項目到私服(上傳)

4. 下載jar包到本地倉庫(應用)
在maven目錄下conf/settings.xml。配置模板
<profile>
<!--profile的id--> <id>dev</id> <repositories> <repository> <!--倉庫id,repositories可以配置多個倉庫,保證id不重復--> <id>nexus</id> <!--倉庫地址,即nexus倉庫組的地址--> <url>http://localhost:8081/nexus/content/groups/public/</url> <!--是否下載releases構件--> <releases> <enabled>true</enabled> </releases> <!--是否下載snapshots構件--> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <!-- 插件倉庫,maven的運行依賴插件,也需要從私服下載插件 --> <pluginRepository> <!-- 插件倉庫的id不允許重復,如果重復后邊配置會覆蓋前邊 --> <id>public</id> <name>Public Repositories</name> <url>http://localhost:8081/nexus/content/groups/public/</url> </pluginRepository> </pluginRepositories> </profile>

激活模板
<activeProfiles> <activeProfile>dev</activeProfile> </activeProfiles>
四、總結
Maven好處包括以下幾點
1、不再拷貝jar包。項目不需要存放jar包。導致項目源代碼小
2、使用maven開發的工程,如果環境統一導入別的maven的項目不會報錯
3、代碼耦合度進一步降低.
4、方便項目進行升級
5、節省人力成本
五、相關資料下載
鏈接:https://pan.baidu.com/s/1UUCps9Be3n8ZwGOXmVjfgw
提取碼:s15f