我是一個(gè)要做程序員的男人逾滥。有問題可以隨時(shí)聯(lián)系我徐勃。
- 1、maven快速入門
- 2礼患、maven核心知識
- 3是钥、maven建立web項(xiàng)目
1掠归、Maven快速入門
1.1 maven介紹及環(huán)境搭建
maven是基于項(xiàng)目對象模型(POM),可以通過一小段描述信息來管理項(xiàng)目的構(gòu)建悄泥、報(bào)告和文檔的軟件項(xiàng)目管理工具拂到。
在apache官網(wǎng)下載maven安裝包。
下載地址:https://maven.apache.org/download.cgi
目錄結(jié)構(gòu)如下:
- bin/
- boot/
- conf/
- lib/
將當(dāng)前的bin目錄設(shè)為環(huán)境變量
此時(shí)maven安裝成功
1.2 maven目錄結(jié)構(gòu)
pom.xml說明
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--項(xiàng)目包名-->
<groupId>com.imooc.maven01</groupId>
<!-- 模塊名-->
<artifactId>maven01-model</artifactId>
<!-- 版本-->
<version>0.0.1SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
</project>
mvn compile 項(xiàng)目編譯命令
mvn test 運(yùn)行測試用力
執(zhí)行完成測試后码泞,得到一個(gè)target目錄
classes ------------------ 項(xiàng)目字節(jié)碼文件
maven-status ------------
surefire-reports ----------- 測試報(bào)告
test-classes --------------- 測試字節(jié)碼文件
mvn package 打包兄旬,將項(xiàng)目打包成一個(gè)jar包
jar包名字由 模塊名-版本名
2、Maven核心知識
2.1 maven基礎(chǔ)知識
常用命令
mvn -v 查看版本
mvn compile 編譯
mvn test 測試
mvn package 打包
mvn clean 刪除target
mvn install 安裝jar包到本地倉庫
在此對mvn install進(jìn)行說明余寥,將項(xiàng)目發(fā)布到本地倉庫领铐,若有其他項(xiàng)目需要使用的時(shí)候直接在pom.xml中添加項(xiàng)目依賴,可以將該jar包加入使用
2.2 maven自動(dòng)創(chuàng)建目錄骨架
archetype插件用于創(chuàng)建maven規(guī)定的目錄骨架
運(yùn)行命令 mvn archetype:generate 進(jìn)行構(gòu)建目錄骨架
輸入以上的命令宋舷,在最后會要求輸入 groupId artifactId version package
mvn archetype:generate -DgroupId:com.xxx.xxx -DartifactId=maven-demo -Dversion=1.0.0SNAPSHOT -Dpackage=com.xxx.xxx.maven-demo
2.3 maven中的坐標(biāo)與倉庫
在maven中任何一個(gè)依賴绪撵、插件項(xiàng)目輸出可以認(rèn)為是一個(gè)構(gòu)件
構(gòu)件通過坐標(biāo)作為其唯一的標(biāo)識
groupId artifactId version 構(gòu)成唯一的坐標(biāo)
倉庫用來管理項(xiàng)目依賴的,倉庫分為本地倉庫和遠(yuǎn)程倉庫
遠(yuǎn)程倉庫在lib/maven-model-builder-3.5.0.jar中的pom-4.0.0.xml祝蝠,這是一個(gè)超級的pom所有都會繼承此
<!--可以打開看到一個(gè)中央倉庫地址-->
<repositories>
<repository>
<id>central</id> <!--中央倉庫唯一標(biāo)識-->
<name>Central Repository</name> <!--中央倉庫名稱-->
<url>https://repo.maven.apache.org/maven2</url> <!--中央倉庫地址-->
<layout>default</layout> <--默認(rèn)地址-->
<snapshots>
<enabled>false</enabled> <--禁止下載快照-->
</snapshots>
</repository>
</repositories>
鏡像倉庫音诈,為了防止下載國外的比較慢
conf/settings.xml中找到<mirrors>標(biāo)簽添加
<!--以下只是例子-->
<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>
更改倉庫位置
默認(rèn)在當(dāng)前用戶的.m2目錄中,mvn install發(fā)布的jar包也在此
找到conf/settings.xml中找到<localRepository>標(biāo)簽中绎狭,修改路徑
<localRepository>/path/to/local/repo</localRepository>
2.4 maven的生命周期與插件
1细溅、完成的項(xiàng)目構(gòu)建過程過程:
clean、compile儡嘶、test喇聊、package、install
清理蹦狂、編譯誓篱、測試、打包凯楔、集成測試窜骄、驗(yàn)證、部署
2摆屯、maven聲明周期
clen 清理項(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ù)器上
3邻遏、插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase> <!--執(zhí)行階段-->
<goals>
<goal>jar-no-fork</goal> <!--執(zhí)行目標(biāo)-->
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2.5 pom.xml常用元素介紹
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--指定當(dāng)前的pom版本-->
<modelVersion>4.0.0</modelVersion>
<!--包名=反寫公司網(wǎng)址+項(xiàng)目名-->
<groupId></groupId>
<!--項(xiàng)目名+模塊名-->
<artifactId></artifactId>
<!--
第一個(gè)0表示大版本號
第二個(gè)0表示分支版本號
第三個(gè)0表示小版本號
0.0.1
snapshot快照
alpha內(nèi)部測試
beta公測
Release穩(wěn)定
GA正式版本
-->
<version>0.0.1SNAPSHOT</version>
<!--默認(rèn)jar
其他war zip pom
-->
<packaging></packaging>
<!--項(xiàng)目描述名-->
<name></name>
<!--項(xiàng)目地址-->
<url></url>
<!--項(xiàng)目描述-->
<description></description>
<!--開發(fā)人員信息-->
<developers></developers>
<!--許可證信息,開源框架-->
<licenses></licenses>
<!--組織信息-->
<organization></organization>
<!--繼承的父模塊-->
<parent></parent>
<!--指定多個(gè)模塊進(jìn)行編譯-->
<modules>
<module></module>
</modules>
<!--依賴列表-->
<dependencies>
<!--依賴項(xiàng)-->
<dependency>
<!--三個(gè)坐標(biāo)-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<type></type>
<!--依賴范圍-->
<scope>test</scope>
<!--設(shè)置依賴是否可選 true false-->
<optional></optional>
<!--排除依賴列表-->
<exclusions>
<exclusion></exclusion>
</exclusions>
</dependency>
</dependencies>
<!--通常在父模塊中使用-->
<dependencyManagement>
<dependencies>
<dependency>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<!--插件列表-->
<plugins>
<plugin>
<!--坐標(biāo)-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase> <!--執(zhí)行階段-->
<goals>
<goal>jar-no-fork</goal> <!--執(zhí)行目標(biāo)-->
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
2.6 maven依賴范圍
三種classpath:編譯鸥拧、測試党远、運(yùn)行
test表示只存在于測試的classpath
<scope></scope>
中共有6中范圍
compile:默認(rèn)范圍削解,編譯測試運(yùn)行都有效
provided:在編譯和測試時(shí)有效
runtime:在測試和運(yùn)行時(shí)有效
test:在測試有效
system:與本機(jī)系統(tǒng)相關(guān)聯(lián)富弦,可移植性差
import :導(dǎo)入的范圍,只使用在dependencyManagement中氛驮,表示從其他的pom中導(dǎo)入的dependecy的配置
2.7maven依賴沖突
1腕柜、短路優(yōu)先,優(yōu)先解析短的版本
A->B->C->X(jar)
A->D->X(jar) 解析該版本
2、路徑一致情況下盏缤,先聲明先優(yōu)先
2.8maven聚合和繼承
對父pom.xml而言需要設(shè)置<packaging>pom</packaging>
<modeules>
..加入至模塊的信息
<modeules>
對子模塊而言需要設(shè)置
<parent>
...加入父的坐標(biāo)
</parent>