1、maven功能介紹
2、maven整合javaweb案例
3、私服應用(瞭解)
4、總結
5、相關資料下載
6、參考文章javascript
Maven的Apache公司開源項目,是項目構建工具。用來依賴管理。
1.1 maven的好處
使用傳統項目開發crm項目,項目大小:html
一樣的項目使用maven開發java
一樣的代碼,實現功能都同樣,maven項目如何作到的?能夠初步推斷maven項目中必定沒有jar包。沒有jar包的maven項目如何運行?
Maven項目找jar包過程:web
1.2 maven的好處api
maven的兩大核心:
依賴管理:對jar包管理過程
項目構建:項目在編碼完成後,對項目進行編譯、測試、打包、部署等一系列的操做都經過命令來實現tomcat
經過maven命令將web項目發佈到tomcat:服務器
舒適提示:使用myeclipse或者IDEA時,maven命令無需出現mvn,直接tomcat:run便可。eclipse
1.3 Maven工程的分類
打包方式
常見:jar、war、pomssh
Jar包
編譯完成,打包
會打成一個JAR包,用做jar包使用maven
war包
是一個Web工程
發佈在服務器上的工程,好比,網站或服務
未來咱們會將全部的JAR包,打到一塊兒
打到一個war包裏面,能夠部署到Tomcat上
Pom
聚合工程
通常都是父工程,管理jar包的版本、maven插件的版本、統一的依賴管理
Pom工程中,至少要有一個war包
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>
對項目中文件進行細分:
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便可。
依賴範圍:默認是compile
若是將servlet-api.jar設置爲compile,打包後包含serlvet-api.jar,war包部署到tomcat跟tomcat中存在servlet-api.jar包衝突。致使運行失敗。
若是使用到tomcat自帶jar包,將項目中依賴做用範圍設置爲:provided,其餘能夠默認
6.1 依賴傳遞規則介紹
傳遞依賴:A(項目)依賴B,B依賴C(1.1版本),B是A的直接依賴,C就是A的傳遞依賴
導入依賴D,D依賴C(1.2版本)
6.2 Maven本身調解原則
第一聲明者優先原則
誰先定義的就用誰的傳遞依賴。
路徑近者優先原則
直接依賴級別高於傳遞依賴。
6.3 排除依賴
方法一:
方法二:版本鎖定(推薦使用)
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.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
下載安裝包
解壓到本地磁盤
使用管理員權限打開dos,在dos下執行命令安裝私服
啓動服務
找到私服的訪問url
Hosted:宿主倉庫
存放本公司開發的jar包(正式版本、測試版本、第三方:存在版權問題--Oracle)
Proxy:代理倉庫
代理中央倉庫、Apache下測試版本的jar包
Group:組倉庫
未來鏈接組倉庫。包含Hosted:宿主倉庫,Proxy:代理倉庫
在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>
執行命令發佈項目到私服(上傳)
在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好處包括如下幾點
一、再也不拷貝jar包。項目不須要存放jar包。致使項目源代碼小
二、使用maven開發的工程,若是環境統一導入別的maven的項目不會報錯
三、代碼耦合度進一步下降.
四、方便項目進行升級
五、節省人力成本
連接:https://pan.baidu.com/s/1UUCps9Be3n8ZwGOXmVjfgw
提取碼:s15f