文章作者:Tyan
博客:noahsnail.com | CSDN | 简书
1. Maven介绍
Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。Maven主要是一个针对Java的项目管理和构建自动化工具。Maven主要处理软件构建的两个方面:1、描述软件是如何构建的,即项目构建;2、描述软件的依赖,即依赖管理。
2. Maven安装
下载地址:https://maven.apache.org/download.cgi,解压之后找到Readme.txt按照说明安装即可。也可以按照Maven官网https://maven.apache.org/install.html安装。
作者是在Mac上使用brew install maven
命令安装的。
安装成功之后,可以运行mvn -v
命令来查看:
1 | # 查看java版本 |
注:Maven安装之前要确保你的系统中已经安装了JDK,可用java -version
查看。
3. Maven目录结构
Maven是一个项目管理和构建自动化工具。Maven使用惯例优于配置的原则。Maven项目的目录结构如下:
目录 | 目的 |
---|---|
${basedir} | 存放 pom.xml和所有的子目录 |
${basedir}/src/main/java | 项目的 java源代码 |
${basedir}/src/main/resources | 项目的资源,比如说 property文件 |
${basedir}/src/test/java | 项目的测试类,比如说 JUnit代码 |
${basedir}/src/test/resources | 测试使用的资源 |
${basedir}/target | 项目输出目录 |
maven项目编译的classes文件会放在${basedir}/target/classes目录下,打包的文件会放在${basedir}/target目录下。
4. Maven命令
测试mvn命令的项目为Spring Boot项目,项目创建参考我的文章:Spring Boot 2.0.0参考手册_中英文对照_Part II_11-12
4.1 mvn compile 编译项目,编译的内容在target目录(默认)
1 | $ mvn compile |
4.2 mvn clean 清理项目,清除编译的内容,会删除target目录
1 | $ mvn clean |
4.3 mvn package 将项目打包
1 | $ mvn package |
在使用mvn package进行编译、打包时,Maven会执行src/test/java中的JUnit测试用例,有时为了跳过测试,会使用参数-DskipTests和-Dmaven.test.skip=true,这两个参数的主要区别是:-DskipTests
,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。-Dmaven.test.skip=true
,不执行测试用例,也不编译测试用例类。
4.4 mvn test 运行测试
1 | $ mvn test |
4.5 mvn test-compile 编译测试文件
1 | $ mvn test-compile |
4.6 mvn eclipse:eclipse 生成eclipse项目,mvn idea:idea 生成IntelliJ IDEA项目
1 | $ mvn eclipse:eclipse |
4.6 mvn eclipse:clean 清理eclipse项目的一些设置
1 | $ mvn eclipse:clean |
4.7 mvn site 为项目创建站点
由于下载内容太多,没等它完成,我取消了,所以这里就没例子了。
4.8 mvn jar:jar 只打jar包
1 | $ mvn jar:jar |
4.8 mvn install 将项目生成的jar包放到本地仓库
1 | $ mvn install |
5. Maven settings.xml
settings.xml是Maven最重要的配置文件,它通常位于两个位置:
Maven安装的主目录: $MAVEN_HOME/conf/settings.xml
用户主目录: $USER_HOME/.m2/settings.xml
第一个setting.xml称为全局配置文件,第二个称为用户配置。如果两个文件同时存在,它们的内容将会合并,用户配置将会覆盖全局配置。
下面的内容翻译自Maven安装时的settings.xml文件:
1 | <?xml version="1.0" encoding="UTF-8"?> |
6. Maven POM.xml
1 | <project xmlns="http://maven.apache.org/POM/4.0.0 " |