生命周期与插件
- clean:清理工作
- default:核心工作,例如编译,测试,打包,部署等
- site:产生报告,发布站点等


命令
在pom.xml同级目录执行命令
命令参数
maven 命令的格式为 mvn [plugin-name]:[goal-name],可以接受的参数如下, -D 指定参数,如 -Dmaven.test.skip=true 跳过单元测试; -P 指定 Profile 配置,可以用于区分环境; -e 显示maven运行出错的信息; -o 离线执行命令,即不去远程仓库更新包; -X 显示maven允许的debug信息; -U 强制去远程更新snapshot的插件或依赖,默认每天只更新一次。
mvn -v, --version 显示版本信息。
mvn -V, --show-version 显示版本信息后继续执行 Maven 其他目标。
mvn -h, --help 显示帮助信息。
mvn -e, --errors 控制 Maven 的日志级别,显示执行错误相关的消息。
mvn -X, --debug 控制 Maven 的日志级别,显示执行调试信息。
mvn -q, --quiet 控制 Maven 的日志级别,仅显示错误信息。
mvn -Pxxx 激活 id 为 xxx 的 profile(如有多个,用逗号隔开)。
mvn -Dxxx=yyy 指定 java 的全局属性。
mvn -o, --offline 运行 offline 模式,不联网更新依赖。
mvn -N, --non-recursive 尽在当前项目模块执行命令,不构建子模块。
mvn -pl, --projects 用于指定要构建的模块列表(英文逗号分隔)。
mvn -ff, --fail-fast 遇到构建失败就直接退出。
mvn -fn, --fail-never 无论项目结果如何,构建从不失败。
mvn -fae, --fail-at-end 仅影响构建结果,允许不受影响的构建继续。
mvn -C, --strict-checksums 如果校验码不匹配的话,构建失败。
mvn -c, --lax-checksums 如果校验码不匹配的话,产生告警。
mvn -U 强制更新 SNAPSHOT 类型的插件或依赖库(否则 Maven 一天只会更新一次 SNAPSHOT 依赖)。
mvn -npu, --no-plugin-updates 对任何相关的注册插件,不进行最新检查(使用该选项使 Maven 表现出稳定的行为,该稳定行为基于本地仓库当前可用的所有插件版本)。
mvn -cpu, --check-plugin-updates 对任何相关的注册插件,强制进行最新检查(即使项目 POM 里明确规定了 Maven 插件版本,还是会强制更新)。
mvn -up, --update-plugins 与 mvn -cpu 作用相同。
mvn -B, --batch-mode 在非交互(批处理)模式下运行(该模式下,当 Maven 需要输入时,它不会停下来接收用户的输入,而是使用合理的默认值)。
mvn -f, --file <file> 强制使用备用的 POM 文件。
mvn -s, --settings <arg> 用户配置文件的备用路径。
mvn -gs, --global-settings <file> 全局配置文件的备用路径。
mvn -emp, --encrypt-master-password <password> 加密主安全密码,存储到 Maven 的 settings 文件里。
mvn -ep, --encrypt-password <password> 加密服务器密码,存储到 Maven 的 settings 文件里。
mvn -npr, --no-plugin-registry 对插件版本不适用 ~/.m2/plugin-registry.xml(插件注册表)里的配置。常用命令
- 清理
- mvn validate 校验
- mvn complie 编译
- 测试
- 打包
- mvn verify 验证
- 安装到本地仓库:
- 部署
最实用命令
mvn clean install最全命令
mvn -v //查看版本
mvn archetype:create //创建 Maven 项目
mvn archetype:generate //创建项目架构
mvn validate //验证项目是否正确
mvn compile //编译源代码
mvn test-compile //编译测试代码
mvn test //运行应用程序中的单元测试
mvn site //生成项目相关信息的网站
mvn package //依据项目生成 jar 文件
mvn verify //运行检查
mvn install //在本地 Repository 中安装 jar
mvn -Dmaven.test.skip=true //忽略测试文档编译
mvn clean //清除目标目录中的生成结果
mvn clean compile //将.java类编译为.class文件
mvn clean package //进行打包
mvn clean test //执行单元测试
mvn clean deploy //部署到版本仓库
mvn clean install //使其他项目使用这个jar,会安装到maven本地仓库中
mvn dependency:list //查看已解析依赖
mvn dependency:tree 查看依赖树,查看包结构间的依赖
mvn dependency:tree >d:/tmp 把结果输出到文件,
mvn dependency:analyze //查看依赖的工具
mvn help:system //从中央仓库下载文件至本地仓库
mvn help:active-profiles //查看当前激活的profiles
mvn help:all-profiles //查看所有profiles
mvn help:effective -pom //查看完整的pom信息
mvn install:install-file -DgroupId=packageName -DartifactId=projectName -Dversion=version -Dpackaging=jar -Dfile=path //安装本地jar到本地仓库
mvn spring-boot:run //项目启动插件
- 插件与生命周期内阶段绑定,在执行到对应生命周期时执行对应的插件功能
- 默认maven各个生命周期上绑定有预设的功能
- 插件可以自定义其他功能
创建maven工程
mvn archetype:generate 了解,idea已经集成了
创建maven项目:mvn archetype:create 指定 group: -DgroupId=packageName 指定 artifact:-DartifactId=projectName 创建web项目:-DarchetypeArtifactId=maven-archetype-webapp
-DarchetypeArtifactId:项目骨架-DgroupId:组织id(必填)-DartifactId:项目名称/模板名称(必填)-DinteractiveMode=false:是否以交互式命令行的形式构建项目
目前可以使用的骨架有:
maven-archetype-archetypemaven-archetype-j2ee-simplemaven-archetype-mojomaven-archetype-portletmaven-archetype-profiles(currently under development)maven-archetype-quickstartmaven-archetype-simple(currently under development)maven-archetype-sitemaven-archetype-site-simplemaven-archetype-webapp:Web项目

清理命令
mvn clean
效果:删除target目录
编译命令
生成class文件
主程序编译:mvn compile
测试程序编译:mvn test-compile
效果
主程序编译后存放目录:target/classes
测试程序编译后存放目录:target/test-classes
测试命令
mvn test
测试报告存放目录:target/surefire-reports
mvn test-compile
编译测试的内容
忽略测试
mvn clean package -DskipTests:跳过测试代码运行,但是会编译
mvn clean package -Dmaven.test.skip=true:跳过测试代码编译和运行(如果没时间改单元测试BUG,使用这种)
打包命令
mvn package
对于 java 工程执行 package 打成 jar 包,对于web 工程打成war包。
安装命令
mvn install
将 maven 打成 jar 包或 war 包发布到本地仓库
mvn install:install-file -Dfile=E:\softwares\zookeeper-3.4.10\zookeeper-3.4.10.jar -DgroupId=org.apache.zookeeper -DartifactId=zookeeper -Dversion=3.4.10 -Dpackaging=jar
本地仓库安装已存在jar
部署命令
mvn deploy
只打包,上传到maven私服仓库
