Maven簡(jiǎn)介
是apache下的一個(gè)開源項(xiàng)目慷嗜,是純java開發(fā),并且只是用來(lái)管理java項(xiàng)目的
Maven好處
普通的傳統(tǒng)項(xiàng)目
圖片.png
Maven項(xiàng)目
圖片.png
依賴管理
need-to-insert-img
圖片.png
Maven的好處
依賴管理:就是對(duì)項(xiàng)目依賴的jar包的統(tǒng)一管理 可以節(jié)省空間
一鍵構(gòu)建
可以跨平臺(tái)
應(yīng)用于大型項(xiàng)目 可以提高開發(fā)效率
Maven構(gòu)建
下載安裝
need-to-insert-img
圖片.png
maven的核心文件 maven/apache-maven-3.5.4/conf/settings.xml
need-to-insert-img
核心文件
Maven的三種倉(cāng)庫(kù)
本地倉(cāng)庫(kù) 自己維護(hù)
配置本地倉(cāng)庫(kù)需要修改setting.xml文件
<!-- localRepository
? | The path to the local repository maven will use to store artifacts.
? |
? | Default: ${user.home}/.m2/repository 默認(rèn)本地倉(cāng)庫(kù)
? <localRepository>/path/to/local/repo</localRepository>
? -->> default 默認(rèn)的本地倉(cāng)庫(kù)
遠(yuǎn)程倉(cāng)庫(kù) 公司維護(hù)
中央倉(cāng)庫(kù) maven團(tuán)隊(duì)維護(hù)
Maven的目錄結(jié)構(gòu)
need-to-insert-img
maven項(xiàng)目目錄結(jié)構(gòu)
need-to-insert-img
Maven的目錄結(jié)構(gòu)
Maven的常用命令
clean清理
clean是maven工程的清理命令蔬啡,執(zhí)行clean會(huì)刪除target目錄的內(nèi)容
need-to-insert-img
clean命令
Compile
Compile是maven工程的編譯命令,作用是將src/main/java下的文件編譯為class文件輸出到target目錄下
need-to-insert-img
圖片.png
Test
test是maven工程的測(cè)試命令,會(huì)執(zhí)行src/test/java下的單元測(cè)試類
need-to-insert-img
圖片.png
package
package是maven工程的打包命令,對(duì)于java工程執(zhí)行package打成jar包懦铺,對(duì)于web工程打成war包
need-to-insert-img
圖片.png
install 將項(xiàng)目發(fā)布到本地倉(cāng)庫(kù)
install是maven工程的安裝命令,執(zhí)行install將maven打成jar包或war包發(fā)布到本地倉(cāng)庫(kù)
對(duì)于web工程 發(fā)布到本地倉(cāng)庫(kù)并沒有任何作用
need-to-insert-img
install
Tomcat:run 一鍵啟動(dòng)
site 生成對(duì)應(yīng)的工程說(shuō)明
Maven的生命周期
compile test package install
執(zhí)行install的時(shí)候 compile test package都會(huì)執(zhí)行
need-to-insert-img
圖片.png
clean的生命周期
maven對(duì)項(xiàng)目構(gòu)建過(guò)程分為三套相互獨(dú)立的生命周期趴生。
CleanLifecycle 在進(jìn)行真正的構(gòu)建之前進(jìn)行一些清理工作
Default Lifecycle 構(gòu)建的核心部分阀趴,編譯,測(cè)試苍匆,打包刘急,部署等
SiteLifecycle 生成項(xiàng)目報(bào)告,站點(diǎn) 發(fā)布站點(diǎn)
need-to-insert-img
各階段生命周期
不同的生命周期命令可以同時(shí)執(zhí)行
mvn cleanpackage
構(gòu)建Maven項(xiàng)目 IDE:Intelij idea
創(chuàng)建項(xiàng)目
need-to-insert-img
創(chuàng)建項(xiàng)目
選擇maven
need-to-insert-img
選擇maven
填寫項(xiàng)目信息
need-to-insert-img
圖片.png
添加tomcat插件
增加war打包
need-to-insert-img
圖片.png
添加web目錄 注意 這個(gè)目錄在main/webapp/
need-to-insert-img
創(chuàng)建web目錄
創(chuàng)建web資源目錄
need-to-insert-img
web資源
在pom.xml添加tomcat插件
need-to-insert-img
pom.xml配置
項(xiàng)目啟動(dòng)配置
編輯配置
need-to-insert-img
編輯配置
添加+ 選擇maven
need-to-insert-img
圖片.png
配置maven命令
need-to-insert-img
配置maven命令
配置maven倉(cāng)庫(kù)
need-to-insert-img
配置maven倉(cāng)庫(kù)
在webapp下添加index.html
need-to-insert-img
圖片.png
啟動(dòng)項(xiàng)目
need-to-insert-img
圖片.png
need-to-insert-img
圖片.png
參考大神文章:https://my.oschina.net/u/2935623/blog/1803198
maven坐標(biāo)定義
每個(gè)maven工程都需要定義本工程的坐標(biāo)浸踩,坐標(biāo)是maven對(duì)jar包身份定義:
<!--項(xiàng)目名稱叔汁,定義為組織名+項(xiàng)目名 類似包名-->cn.probuing.maven<!--模塊名稱-->maven_tx<!--當(dāng)前項(xiàng)目版本號(hào)-->1.0-SNAPSHOT<!--打包類型-->war* jar:執(zhí)行package會(huì)打成jar包? ? * war:執(zhí)行package會(huì)打成war包? ? * pom:用于maven工程的集成,通常父工程設(shè)置為pom
maven與Struts2整合
使用struts2與maven傳遞一個(gè)客戶id 跳轉(zhuǎn)頁(yè)面
創(chuàng)建項(xiàng)目
need-to-insert-img
創(chuàng)建項(xiàng)目
設(shè)置packaging 為war
<?xml version="1.0"encoding="UTF-8"?>4.0.0cn.probuing.crmmavenProj1.0-SNAPSHOTwar
添加web目錄
need-to-insert-img
圖片.png
添加tomcat插件
org.apache.tomcat.maventomcat7-maven-plugin2.28080/mavssh
添加依賴 管理jar包
<!--依賴管理-->org.apache.strutsstruts2-core2.3.24javax.servletjsp-api2.0providedjavax.servletservlet-api2.5providedjunitjunit4.10
為避免包沖突,添加servlet-api.jar和jsp-api.jar 注意選擇scope為provided
配置struts2
struts.xml src/main/resources/
<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC
? ? "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
? ? "http://struts.apache.org/dtds/struts-2.3.dtd"><!-- 配置常量 --><!-- 字符集 --><!-- 開發(fā)模式 --><!-- 主題 --><!-- 擴(kuò)展名 --><!-- 通用package -->/info.jsp
web.xml 核心過(guò)濾器
struts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts2/*
編寫action
publicclassCutomerActionextendsActionSupport{privateLong custId;publicLonggetCustId(){returncustId;? ? }publicvoidsetCustId(Long custId){this.custId = custId;? ? }publicStringfindById(){returnSUCCESS;? ? }}
jsp
<%@ page contentType="text/html;charset=UTF-8"language="java"%>TitleHello Every body it's from maven
依賴范圍
Compile
編譯時(shí)需要据块,測(cè)試時(shí)需要码邻,運(yùn)行時(shí)需要,打包時(shí)需要
Provided
編譯時(shí)需要另假,測(cè)試時(shí)需要像屋,運(yùn)行時(shí)不需要,打包時(shí)不需要
Runtime
編譯時(shí)不需要边篮,測(cè)試時(shí)需要己莺,運(yùn)行時(shí)需要,打包時(shí)需要
Test
編譯時(shí)不需要戈轿,測(cè)試時(shí)需要凌受,運(yùn)行時(shí)不需要,打包也不需要
整合框架時(shí)依賴沖突的解決
在我們整合框架的時(shí)候思杯,在集成了多個(gè)框架的時(shí)候可能會(huì)出現(xiàn)依賴沖突的情況胜蛉,我們解決依賴沖突主要有以下幾個(gè)方式
第一聲明優(yōu)先原則
優(yōu)先聲明的會(huì)先進(jìn)行配置,如下配置中Maven會(huì)集成spring-beans-4.2.4的依賴庫(kù)
<!--? spring-beans-4.2.4 -->org.springframeworkspring-context4.2.4.RELEASE<!--? spring-beans-3.0.5 -->org.apache.strutsstruts2-spring-plugin2.3.24
路徑優(yōu)先原則
自己指定jar包
org.springframeworkspring-beans4.2.4.RELEASE
添加排除
使用標(biāo)簽可以指定排除沖突的庫(kù)
org.apache.strutsstruts2-spring-plugin2.3.24org.springframeworkspring-beans
版本鎖定原則
<!--定義變量配置-->4.2.4.RELEASE5.0.7.Final2.3.24<!-- 鎖定版本色乾,struts2-2.3.24誊册、spring4.2.4、hibernate5.0.7 -->org.springframeworkspring-context${spring.version}
分模塊開發(fā)
依賴傳遞
依賴傳遞
依賴關(guān)系
父工程
模塊工程
依賴模塊工程的模塊工程
在這里需要注意的是 對(duì)于有些工程 定義的 依賴的生命周期為scope為test的依賴杈湾,需要手動(dòng)添加到依賴中
作者:So_ProbuING
鏈接:http://www.reibang.com/p/6befb7cf32f8
來(lái)源:簡(jiǎn)書
簡(jiǎn)書著作權(quán)歸作者所有解虱,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處。