Maven 教程
Maven 是一個項目管理工具,可以對 Java 項目進(jìn)行構(gòu)建、依賴管理。
1. maven中的坐標(biāo)和倉庫
1.1 坐標(biāo)
maven中構(gòu)件通過坐標(biāo)作為其唯一標(biāo)識
<dependency>
<!---相當(dāng)于一個坐標(biāo)--->
<groupId>com.hongshun.maven01</groupId> <!--推薦:公司網(wǎng)站反寫+項目名 -->
<artifactId>maven01-model</artifactId> <!--推薦:項目名-模塊名 -->
<version>0.0.1SNAPSHOT</version>
</dependency>
1.2 倉庫
本地倉庫:運(yùn)行 Maven 的時候,Maven 所需要的任何構(gòu)件都是直接從本地倉庫獲取的。如果本地倉庫沒有,它會首先嘗試從遠(yuǎn)程倉庫下載構(gòu)件至本地倉庫,然后再使用本地倉庫的構(gòu)件。
中央倉庫:Maven 中央倉庫是由 Maven 社區(qū)提供的倉庫,其中包含了大量常用的庫。
遠(yuǎn)程倉庫:如果 Maven 在中央倉庫中也找不到依賴的文件,它會停止構(gòu)建過程并輸出錯誤信息到控制臺。為避免這種情況,Maven 提供了遠(yuǎn)程倉庫的概念,它是開發(fā)人員自己定制倉庫,包含了所需要的代碼庫或者其他工程中用到的 jar 文件。
鏡像倉庫:Maven 倉庫默認(rèn)在國外, 國內(nèi)使用難免很慢,我們可以更換為阿里云的倉庫。
2. Pom.xml解析
pom常見元素介紹:
- project
- modelVersion 指定當(dāng)前pom的版本
- groupId 推薦:公司網(wǎng)站反寫+項目名
- artifactId 推薦:項目名-模塊名
- version 大版本號.分支版本號.小版本號 (snapshot快照,alpha內(nèi)部測試,beta公測,release穩(wěn)定)
- packaging
- name :項目描述名
- url: 項目地址
- description
- developers
- license
<?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>
<groupId>com.hongshun.maven02</groupId>
<artifactId>maven02-maven</artifactId>
<!--
大版本號.分支版本號.小版本號
snapshot快照
alpha內(nèi)部測試
beta公測
release穩(wěn)定
GA正式發(fā)布
-->
<version>0.0.1SNAPSHOT</version>
<!--
打包方式,默認(rèn)是jar
war zip pom
-->
<packaging></packaging>
<dependencies>
<dependency>
<groupId></groupId>
<artifactId ></artifactId >
<version><version>
<!-- 可選 -->
<type></type>
<scope>test</scope>
<!--設(shè)置依賴是否可選-->
<optional></optional>
<!--排除依賴傳遞列表-->
<exclusions></exclusions>
</dependency>
</dependencies>
<!---項目描述名-->
<name></name>
<!-- 項目地址 -->
<url></url>
<!-- 項目描述 -->
<description></description>
<developers></developers>
<licenses></licenses>
<organization></organization>
</project>
3. maven常用的構(gòu)建命令
- mvn -v 查看maven版本
- compile 編譯
- test 測試
- package 打包
- clean 刪除target
- install 安裝jar包到本地倉庫中 ,(以便其他文件利用<dependency></dependency>引入)
mvn compile編譯的過程中,發(fā)現(xiàn)import就會到pom.xml文件中查找是否有該包的坐標(biāo)。如果本地倉庫中有,直接引入。如果沒有,就會去網(wǎng)上maven的中央倉庫中查找。
4. Maven生命周期
4.1 生命周期
Maven 有以下三個標(biāo)準(zhǔn)的生命周期:
- clean:項目清理的處理
- default(或 build):項目部署的處理
- site:項目站點文檔創(chuàng)建的處理
4.2 clean 清理項目
- pre-clean 執(zhí)行清理前的工作
- clean 清理上一次構(gòu)建生成的文件
- post-clean 執(zhí)行清理后的文件
4.3 build構(gòu)建項目
compile、test、package、install
4.4 site 生成項目站點
- pre-site 在生成項目站點前要完成的工作
- site 生成項目的站點文檔
- post-site 在生成項目站點后要完成的工作
- site-deploy 發(fā)布生成的站點到服務(wù)器上
5. Maven插件(待進(jìn)一步整理)
每個生命周期中都包含著一系列的階段(phase)。這些 phase 就相當(dāng)于 Maven 提供的統(tǒng)一的接口,然后這些 phase 的實現(xiàn)由 Maven 的插件來完成。我們在輸入 mvn 命令的時候 比如 mvn clean,clean 對應(yīng)的就是 Clean 生命周期中的 clean 階段。但是 clean 的具體操作是由 maven-clean-plugin 來實現(xiàn)的。所以說 Maven 生命周期的每一個階段的具體實現(xiàn)都是由 Maven 插件實現(xiàn)的。
maven自動創(chuàng)建目錄骨架
Maven 提倡使用一個共同的標(biāo)準(zhǔn)目錄結(jié)構(gòu),Maven 使用約定優(yōu)于配置的原則。只需要按照約定的目錄建立項目即可。
創(chuàng)建目錄的兩種方式:
- archetype:generate 按照提示進(jìn)行選擇
- archetype:generate -DgroupId = 組織名(公司網(wǎng)站反寫+項目名) -DartifactId=項目名-模塊名 -Dversion=版本號 -Dpackage=代碼所存在的包
依賴
依賴范圍
依賴傳遞
依賴沖突
聚合和繼承
Maven [ERROR] 不再支持源選項 5。請使用 6 或更高版本
在pom.xml中加入本地jdk的版本:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>10</maven.compiler.source>
<maven.compiler.target>10</maven.compiler.target>
</properties>