在項目開發過程當中,只要依賴第三方庫的必定會使用到Maven,那麼Maven究竟是什麼,該怎麼使用,可能對咱們來講就不是特別的清楚; 此次就來看看我整理的一些Maven簡單用法;html
1, Maven介紹:apache
maven是用於構建和管理任何JAVA項目的工具;tomcat
2, Maven的目標: 服務器
讓開發人員在最短的時間內瞭解開發工做的完整狀態;框架
好了好了,這些廢話就先到這裏;須要詳細瞭解的能夠訪問其官網:maven
http://maven.apache.org/what-is-maven.htmlide
3, 從官網上將Maven下載下來:工具
(1), MAVEN目錄說明:post
bin : 包含mvn的運行腳本; 在cmd中輸入mvn調用該目錄;
boot : 包含類加載器的框架, mvn使用它加載本身的類庫;
conf : 配置文件目錄;
lib : 包含自身和第三方的類庫;測試
(2), 環境變量配置:
M2_HOME
D:\Maven\apache-maven-3.5.2
Path中加入:
%M2_HOME%\bin
驗證: cmd中: mvn -v
(3), 項目編譯:
在項目目錄下:
mvn -v : 查看Maven版本
mvn compile : 項目編譯
mvn test : 項目測試
mvn package : 打包jar
mvn clean : 刪除target
mvn install : 安裝jar包到本地倉庫
(4), 建立目錄的兩種方式:
1, mvn archetype:generate 按照提示進行選擇
2, mvn archetype:generate -DgroupId=組織名(網址反寫+項目名)
-DartifactId=項目名-模塊名
-Dversion=版本號
-Dpackage=代碼所在的包名
例:
D:\Maven\code\maven02>mvn archetype:generate -DgroupId=com.gy.maven02 -DartifactId=maven02-utils -Dversion=0.0.1SNAPSHOT -Dpackage=com.gy.maven02.utils
4, Maven中的座標和倉庫:
Maven 經過這三個來定位座標:
<groupId>com.gy.maven01</groupId>
<artifactId>maven01-model</artifactId>
<version>0.0.1-SNAPSHOT</version>
Maven 倉庫 : 本地倉庫,遠程倉庫
鏡像倉庫:
更改: D:\Maven\apache-maven-3.5.2\conf\settings.xml 中 第152行:
<!--切換阿里鏡像--> <mirror> <id>aliyun</id> <mirrorOf>central</mirrorOf> <name>aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror>
更改本地倉庫位置:
更改: D:\Maven\apache-maven-3.5.2\conf\settings.xml 中 第55行:
<!--切換本地倉庫位置--> <localRepository>D:/Maven/repo</localRepository>
更改默認JDK版本:
更改: D:\Maven\apache-maven-3.5.2\conf\settings.xml 中 第197行:
<!--切換JDK版本爲1.8--> <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>
5, 完整項目構建過程包括:
清理, 編譯, 測試, 打包, 集成測試, 驗證, 部署
6, Maven 生命週期:
clean : 清理項目
clean的三個階段:
pre-clean : 執行清理前的工做
clean : 清理上一次構件生產的全部文件
post-clean : 執行清理後的文件
default : 構建項目(最核心)
clean,--> compile,--> test,--> package, install
執行package時會依次執行前面的步驟;
site : 生成項目站點
site的四個階段:
pre-site : 在生成項目站點前要完成的工做;
site : 生成項目的站點文檔;
post-site: 在生成項目站點後要完成的工做;
site-deploy : 發佈生成站點到服務器上7, Maven插件的使用:
7, Maven插件的使用: 在項目pom.xml中添加:
<build> <!-- Maven插件集合 --> <plugins> <!-- Maven-source插件,做用: 將項目源碼打包 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.4</version> <executions><!-- 插件運行階段集合 --> <execution> <phase>package</phase><!-- 在項目package(打包)時運行該插件 --> <goals><!-- 運行目標 --> <goal>jar-no-fork</goal><!--與jar類似(將源碼打成jar包),但不會構建生命週期--> </goals> </execution> </executions> </plugin> </plugins> </build>
8, pom.xml經常使用元素介紹:
<?xml version="1.0" encoding="UTF-8"?> <!-- Maven官網: http://maven.apache.org --> <!-- project: pom.xml的根元素,包含maven的約束信息 --> <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/maven-v4_0_0.xsd"> <!-- 固定的MAVEN版本 --> <modelVersion>4.0.0</modelVersion> <!-- 多模塊使用: <parent></parent> parent: 一般用於子模塊中對父模塊的繼承; <modules> modules: 指定多個模塊,一塊兒進行編譯 <module></module> </modules> --> <!-- 當前項目座標: groupId : 反寫的公司網址.項目名; artifactId : 項目名-模塊名; version : 項目版本 第一個0: 大版本號; 第二個0: 分支版本號; 第三個0: 小版本號; SNAPSHOT 快照版本; ALPHA 內部測試; BETA 公測版本; GA 正式發佈; --> <groupId>com.gy.maven01</groupId> <artifactId>maven01-model</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- 打包形式,默認爲jar: jar JAR包; war WAR包; zip 壓縮包; pom 配置包; <packaging>jar</packaging> --> <!-- 不常常用: 產生項目文檔時須要用: <name>項目描述名</name> 項目地址: <url></url> 項目描述: <description></description> 項目開發人員列表: <developers></developers> 開源框架許可證信息: <licenses></licenses> 組織信息: <organization></organization> --> <!-- 重要: 項目依賴列表 <dependencies> <dependency> dependency: 依賴項目 <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <type></type> <scope>test</scope> scope: 依賴範圍; <optional>false</optional> optional(true|false): 設置依賴是否可選,默認爲false; <exclusions> exclusions: 排除依賴的列表 <exclusion></exclusion> exclusion : 排除依賴的項目 </exclusions> </dependency> </dependencies> --> <!-- <scope></scope> : 依賴範圍詳解(官網: http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope): compile : 默認,對編譯,測試,運行 都有效; provided : 在編譯,測試時有效; runtime : 在測試,運行時有效; test : 只在測試時有效; system : 在編譯,測試時有效;與本機系統相關聯,移植性差; import : 導入的依賴範圍;它只使用在 <dependencyManagement> 中,表示從其餘pom中導入dependency配置; --> <!-- 不常常使用: <dependencyManagement> dependencyManagement: 項目依賴管理 <dependencies> dependencies: 項目依賴列表 做用: 裏面的依賴項目不會直接參與運行,一般定義在父類模塊中,供子模塊繼承; </dependencies> </dependencyManagement> --> <!-- 項目依賴列表 --> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> </dependencies> <!-- <build> <plugins> plugins: Maven插件列表 <plugin> plugin: 插件 <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat8-maven-plugin</artifactId> <version>2.2</version> <executions> <execution> <phase>package</phase> 在打包時執行該插件 <goals> <goal>run</goal> 運行目標: run; </goals> </execution> </executions> </plugin> </plugins> </build> --> <build> <!-- Maven插件集合 --> <plugins> <!-- Maven-source插件,做用: 將項目源碼打包 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.4</version> <executions><!-- 插件運行階段集合 --> <execution> <phase>package</phase><!-- 在項目package(打包)時運行該插件 --> <goals><!-- 運行目標 --> <goal>jar-no-fork</goal><!--與jar類似(將源碼打成jar包),但不會構建生命週期--> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
9, Maven依賴傳遞:
B依賴A; C依賴B, ===> C依賴A
10, Maven依賴衝突:
1, 短路優先原則:
A -> B -> C -> X(jar);
A -> D -> X(jar);
兩條路徑優先解析下面的較短路徑;
2, 路徑相同,先聲明先解析;
11, Maven聚合和繼承:
<!-- <parent></parent> parent: 一般用於子模塊中對父模塊的繼承; <modules> modules: 指定多個模塊,一塊兒進行編譯 <module></module> </modules> <dependencyManagement> dependencyManagement: 項目依賴管理 <dependencies> dependencies: 項目依賴列表 做用: 裏面的依賴項目不會直接參與運行,一般定義在父類模塊中,供子模塊繼承; </dependencies> </dependencyManagement> -->
差很少就是這麼多了,其餘的用法能夠參考MAVEN官網;