一.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.</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.</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.</version>
</dependency>
6. 数据库连接组件
<!-- mysql start -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.</version>
</dependency>
<!-- redis start -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.</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.