一.Maven的簡介
1. 什么是maven
是Apache下的一個開源的項目,是純java編寫,並且只是用來管理java項目。
2. Maven的好處
- maven項目管理jar節省磁盤空間
- 一鍵構建,可以用一個命令(tomcat:run)讓項目運行起來
- 可以跨平台
- 應用於大型項目時可以提高開發效率
3. maven的三種倉庫

二.Maven的安裝配置
1.下載
官網下載地址:https://archive.apache.org/dist/maven/maven-3/

把壓縮包拷貝到一個沒有中文沒有空格的目錄中,直接解壓到當前目錄
Maven的結構

Maven的核心配置文件 settings.xml

2. 配置本地倉庫
<!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ${user.home}/.m2/repository <localRepository>/path/to/local/repo</localRepository> -->
修改自定義倉庫路徑

3. 配置環境變量
電腦-屬性-高級系統設置-高級-環境變量-系統變量 添加MAVEN_HOME

加到path中

4.驗證是否安裝成功
Win +R 打開cmd窗口,執行mvn -v命令,看到如下界面表示成功:注意:Maven 3.3+需要執行JDK 1.7或更高版本。

三.Maven命令周期
1. maven工程目錄結構
2. Maven命令
進入到工程中(項目文件目錄中)cmd窗口
編譯: mvn compile
測試: mvn test
打包:package
打包到本地倉庫中 :mvn install
3. Maven的生命周期
聲明周期是由每個階段組成:Compile test package install deploy
4. 各個生命周期的關系
不同的生命周期命令可以同時執行
Mvn clean package mvn package clean Mvn test package
5. 生產環境打包測試命令
1) 項目打包方式
如果在 eclipse 中,則需要如下 maven 參數進行打包:
-P local clean package:不打包第三方依賴
-P dev clean package install:打包第三方依賴
如果在 idea 中,則需要在 maven project 視圖中雙擊選擇如下package按鈕進行打包。打包完成會在項目taget目錄產生一個項目jar包。


在 Windows 上測試: java -cp cm_producer-1.0-SNAPSHOT.jar 主函數全類名 本地目錄/文件名

在 Linux 中進行測試:編寫 bash 腳本:sh productlog.sh
#!/bin/bash java -cp /home/admin/call/cm_product-1.0-SNAPSHOT.jar product.ProductLog /home/admin/call/calllog.csv
四.構建Maven工程
1.IDEA關聯Maven

2.創建maven工程
1、 創建的是一個簡單的maven項目,需要做的是勾選圖示所示的“Create From Archetype”復選框,在下面的下拉選項中我們選擇“quickstart”,之后點擊【Next】

2、 填寫maven的坐標,“groupId”,“artifactId”,以及“version”,其中groupId是公司域名的反寫,而artifactId是項目名或模塊名,而version就是該項目或模塊所對應的版本號。

3、 填寫項目名稱,然后flish完成。


五.Maven常用插件
1.配置編譯版本
在pom.xml中添加如下代碼:指定項目編譯使用的jdk
<build>
<!-- 配置了很多插件 -->
<plugins>
<!-- 配置maven項目編譯插件,即jdk -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
2. 編譯跳過測試
具體用法說明參考:http://maven.apache.org/surefire/maven-surefire-plugin/examples/skipping-tests.html
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
3. 日志插件
<properties>
<slf4j.version>1.7.25</slf4j.version>
<log4j.version>1.2.17</log4j.version>
</properties>
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
4. 單元測試
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
5. 常用阿里組件
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
6. 數據庫連接組件
<!-- mysql start --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <!-- redis start --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
更多插件說明參考:https://www.cnblogs.com/heaven1025/p/6195825.html
六.Maven常用錯誤
1.下載更新jar包速度慢
使用maven時更改使用阿里雲的鏡像,在apache-maven-3.5.0\conf\settings.xml中添加國內阿里鏡像
<mirrors>
<!-- 阿里雲倉庫 -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<!-- 中央倉庫1 -->
<mirror>
<id>repo1</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo1.maven.org/maven2/</url>
</mirror>
<!-- 中央倉庫2 -->
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
</mirrors>
2.

