1、下載maven : https://maven.apache.org/download.cgi
創(chuàng)新互聯(lián)2013年開(kāi)創(chuàng)至今,先為修水等服務(wù)建站,修水等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為修水企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
配置環(huán)境變量:M2_HOME:D:\apache-maven-3.5.4
:path:%M2_HOME%\bin;
測(cè)試maven:cmd mvn -v
2、groupId的值就是項(xiàng)目的包名
artifactId的值就模塊名
version版本
例如:
<groupId>com.maven.demo</groupId>
<artifactId>maven01-model</artifactId>
<version>0.0.1SNAPSHOT</version>
maven的目錄結(jié)構(gòu)
project
src
-main
-java
-package
-test
-java
-package
resources
mvn compile
mvn test
mvn package
3、maven常用構(gòu)建命令
mvn -v 查看maven版本
compile 編譯
test 測(cè)試
package 打包
clean 刪除target
install 安裝jar包到本地倉(cāng)庫(kù)中(先找pom.xml依賴,在找本地庫(kù),最后找網(wǎng)上中央庫(kù))
maven自動(dòng)建立目錄骨架
第一種方式 mvn archetype:generate
第二種方式 mvn archetype:generate -DgroupId=組織名,公司網(wǎng)址的反寫(xiě)+項(xiàng)目名
-DartifactId=項(xiàng)目名-模塊名
-Dversion=1.0.0SNAPSHOT
-Dpackage=代碼存在的包
maven 坐標(biāo)和倉(cāng)庫(kù)
基本坐標(biāo):
構(gòu)件
<groupId>com.maven.demo</groupId>
<artifactId>maven01-model</artifactId>
<version>0.0.1SNAPSHOT</version>
倉(cāng)庫(kù):
本地倉(cāng)庫(kù)
遠(yuǎn)程倉(cāng)庫(kù)(maven-model-bulider)
鏡像倉(cāng)庫(kù)
\apache-maven-3.5.4\conf\settings.xml (152行)
<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>
更改倉(cāng)庫(kù)位置(默認(rèn)路徑:C:\Users\CHUAN\.m2)
\apache-maven-3.5.4\conf\settings.xml (53行)
<localRepository></localRepository>
eclipe安裝maven插件以及創(chuàng)建maven項(xiàng)目
Preferences-Maven-Installations 添加maven目錄
-User Settings 添加maven的setting.xml(.\apache-maven-3.5.4\conf\setting.xml)
maven的生命周期和插件
完整的項(xiàng)目構(gòu)件過(guò)程包括:
清理、編譯、測(cè)試、打包、集成測(cè)試、驗(yàn)證、部署
maven生命周期
clean 清理項(xiàng)目
pre-clean 執(zhí)行清理前的工作
clean 清理上一次構(gòu)建生成的所有文件
post-clean 執(zhí)行清理后的文件
default 構(gòu)建項(xiàng)目(最核心)
compile test package install
site 生成項(xiàng)目站點(diǎn)
pre-site 在生成項(xiàng)目站點(diǎn)前要完成的工作
site 生成項(xiàng)目的站點(diǎn)文檔
post-site 在生成項(xiàng)目站點(diǎn)后要完成的工作
site-deploy 發(fā)布生成的站點(diǎn)到服務(wù)器上
maven生命周期
clean、compile、test、package、install
maven中pom.xml解析
<modelVersion>4.0.0</modelVersion> 指定當(dāng)前pom的版本
坐標(biāo)信息
<groupId>組織名,公司網(wǎng)址的反寫(xiě)+項(xiàng)目名</groupId> 主項(xiàng)目的標(biāo)識(shí)
<artifactId>項(xiàng)目名-模塊名</artifactId> 模塊的標(biāo)識(shí)
<!--
第一個(gè)0表示大版本號(hào)
第二個(gè)0表示分支版本號(hào)
第三個(gè)0表示小版本號(hào)
0.0.1
snapshot快照版本
alpha內(nèi)測(cè)版本
beta公測(cè)
release穩(wěn)定
GA正式發(fā)布
-->
<version></version> 當(dāng)前項(xiàng)目的版本號(hào)
<!--
默認(rèn)是jar
也可以是war,zip,pom
-->
<packaging></packaging> 打包的方式
<name></name> 項(xiàng)目描述
<url></url>項(xiàng)目的地址
<description></description>項(xiàng)目描述
<developers></developers>項(xiàng)目開(kāi)發(fā)人員
<licenses></licenses>許可
<organization></organization>組織
重要:依賴列表
<dependencies>
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<type></type>
<scope>test</scope> 依賴范圍
<optional>true/默認(rèn)false</optional> 設(shè)置依賴是否可選,
如果是false子項(xiàng)目是默認(rèn)繼承的
如果是true子項(xiàng)目必須顯示引入該依賴
<exclusions> 排除依賴傳遞列表
<exclusion>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<dependencyManagement> 依賴管理包含多個(gè)依賴,并不會(huì)被運(yùn)行,主要定義到父模塊讓子模塊繼承用的
<dependencies>
<dependency>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>插件列表
<plugin>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</plugin>
</plugins>
</build>
<parent></parent>用于子模塊對(duì)父模塊的繼承
<modules></modules>聚合多個(gè)模塊
maven 依賴范圍
<scope></scope> 三種classpath: 編譯 test測(cè)試 運(yùn)行
compile:默認(rèn)的范圍,編譯測(cè)試運(yùn)行都有效
provided:在編譯和測(cè)試有效
runtime:在運(yùn)行的時(shí)候有效
test:只在測(cè)試有效 典型應(yīng)用junit
system:在編譯和測(cè)試有效 與本機(jī)系統(tǒng)相關(guān)聯(lián),可移植性差
import:導(dǎo)入的范圍,它只使用在dependencyManagerment中,
表示從其他的pom中導(dǎo)入dependecy的配置
http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
maven 是依賴傳遞特性的
a-pom.xml
b-pom.xml
c-pom.xml
如果b集成a,c會(huì)自動(dòng)集成a。
如果創(chuàng)建maven項(xiàng)目 jre system library 顯示jre5 但是 jre里面是1.8
修改setting.xml(188行)
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
maven 依賴沖突
1、短路優(yōu)先
A->B->C->X(jar)
A->D->X(jar)優(yōu)先解析
例如:A依賴2.4jar B依賴A和2.0jar C依賴B 所以C依賴2.0jar
2、先聲明先優(yōu)先
如果路徑長(zhǎng)度相同,則誰(shuí)先聲明,先解析誰(shuí)
例如:A依賴2.4jar B依賴2.0jar C中pom A在B前 所以C依賴2.4jar
Maven 聚合和繼承
maven聚合:
父模塊的pom文件修改
<package>pom</package>
<modules>
<module>子模塊項(xiàng)目名一</module>
<module>子模塊項(xiàng)目名二</module>
</modules>
maven繼承:
如果每個(gè)module 也就是每個(gè)小的模塊中的pom 有重復(fù)的 jar
比如junit 這樣可以用繼承。。
創(chuàng)建父類(lèi)項(xiàng)目,<packaging>標(biāo)簽元素值修改為pom
然后加一個(gè)標(biāo)簽<dependencyManagement> 把依賴放到里面。。
其中的版本號(hào), 可以通過(guò)引用來(lái)表示,需要添加 <properties>標(biāo)簽。
子類(lèi)用<parent>標(biāo)簽 引用父pom.xml坐標(biāo)
例如:新建父類(lèi)中pom.xml如下:
<packaging>pom</packaging>
<properties>
<junitversion>3.8.1</junitversion>
</properties>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junitversion}</version>
<scope>test</scope>
</dependency>
子類(lèi)pom.xml
<parent>
父pom.xml的坐標(biāo)
</parent>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
使用maven構(gòu)建web項(xiàng)目
添加java servlet api的坐標(biāo) scope為provide
手動(dòng)創(chuàng)建maven骨架文件
檢查 java build path outfolder 為/target/classes/目錄
項(xiàng)目轉(zhuǎn)換成web項(xiàng)目,右鍵屬性,project facets為Dynamic 勾選
發(fā)布右鍵屬性,deployment assembly 把test都去掉
在pom.xml使用packaging命令打成war包
添加jetty maven的插件到pom.xml
<executions>
<execution>
<!-- 在打包成功后使用jetty:run 運(yùn)行 jetty的服務(wù) -->
<phase>package</phase><!--打包階段-->
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
maven下載和環(huán)境搭建
maven目錄骨架說(shuō)明
網(wǎng)頁(yè)名稱:maven快捷使用說(shuō)明
文章分享:http://aaarwkj.com/article40/jpoeho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、自適應(yīng)網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站改版、網(wǎng)站內(nèi)鏈、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)