Maven常用命令小结

简介: 简述Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。Maven 也可被用于构建和管理其它各种项目,例如:C#,Ruby,Scala和其它语言编写的项目。

简述

Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。Maven 也可被用于构建和管理其它各种项目,例如:C#,Ruby,Scala和其它语言编写的项目。


Maven 构建生命周期

Maven 构建生命周期定义了一个项目构建跟发布的过程。一个典型的 Maven 构建(build)生命周期是由以下几个阶段的序列组成的:

网络异常,图片无法展示
|


阶段 处理 描述
validate 验证项目 验证项目是否正确且所有必须信息是可用的
compile 执行编译 源代码编译在此阶段完成
test 测试 使用适当的单元测试框架(例如JUnit)运行测试
package 打包 创建JAR/WAR包,如在 pom.xml 中定义提及的包
verify 检查 对集成测试的结果进行检查,以保证质量达标
install 安装 安装打包的项目到本地仓库,以供其他的项目使用
deploy 部署 拷贝最终的工程包到远程仓库中,以共享给其他的开发人员和其他的工程


Maven 功能

Maven 能够帮助开发者完成构建、文档生成、报告、依赖、SCMs、发布等工作


常用命令汇总

创建 Maven 项目模板

Maven 使用 archetype(原型) 来创建自定义的项目结构,形成 Maven 项目模板。archetype 是一个 Maven 插件,准确说是一个项目模板,它的任务是根据模板创建一个项目结构。默认将使用 quickstart 原型插件(maven-archetype-quickstart)创建一个简单的 java 应用程序。

方式一:命令行根据提示选择或填写

mvn archetype:generate   

可以按照提示进行选择或填写,默认选的话,直接按回车键即可。

# tree example-all 
example-all
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── org
    │           └── example
    │               └── App.java
    └── test
        └── java
            └── org
                └── example
                    └── AppTest.java
复制代码


方式二:命令行预先指定填写

mvn archetype:generate -DgroupId=组织名(公司网址的反写+项目名) -DartifactId=项目名—模块名 -Dversion=版本号 -Dpackage=代码所存在的包名

样例:

mvn archetype:generate -DgroupId=com.lgd.example -DartifactId=mvn-example-all -Dversion=1.0.0-SNAPSHOT -Dpackage=com.lgd.example
# 或者
mvn archetype:generate -DgroupId=com.lgd.example -DartifactId=sample-all -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
# tree mvn-example-all
mvn-example-all
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── org
    │           └── example
    │               └── App.java
    └── test
        └── java
            └── org
                └── example
                    └── AppTest.java
复制代码


验证项目是否正确

mvn validate

清理maven项目

mvn clean

编译

编译源代码

mvn compile

编译测试代码

mvn test-compile

运行测试

mvn test

打包

mvn package

# 清除以前的包后重新打包,跳过测试类
mvn clean package -Dmaven.test.skip=true  
复制代码

只打jar包

mvn jar:jar

生成源码jar包

mvn source:jar

运行检查

mvn verify

安装项目到本地仓库

mvn install

发布项目到远程仓库

mvn deploy

查看项目的maven依赖

显示maven依赖树

mvn dependency:tree

显示maven依赖列表

mvn dependency:list

下载依赖包的源码

mvn dependency:sources

生成项目相关信息的网站

mvn site

WEB相关命令

启动tomcat

mvn tomcat:run

启动jetty

mvn jetty:run

Maven三大生命周期

Maven有三套相互独立的生命周期,分别是clean、default和site。每个生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。

clean周期

主要用于清理上一次构建产生的文件,可以理解为删除target目录。

  1. pre-clean:执行清理前需要完成的工作
  2. clean:清理上一次构建生成的文件
  3. post-clean:执行清理后需要完成的工作

命令:

mvn clean
复制代码

default周期

主要阶段包括:

  1. process-resources:默认处理src/main/resources/下的文件,将其输出到对应的classpath目录中。
  2. compile:编译src/main/java下的java文件,产生对应的class。
  3. process-test-resources:默认处理src/test/resources/下的文件,将其输出到对应的classpath目录中。
  4. test-compile:编译src/test/java下的java文件,产生对应的class。
  5. test:运行测试用例。
  6. package:打包构件,即生成对应的jar包、war包等。
  7. install:将构件部署到本地仓库。
  8. deploy:部署构件到远程仓库。

命令:

mvn install
mvn package
mvn clean package # 调用clean生命周期的clean阶段和default生命周期的package阶段
复制代码


site周期

主要阶段包括:

  1. site:产生项目的站点文档。
  2. site-deploy:将项目的站点文档部署到服务器。

命令:

mvn site
复制代码


package、install、deploy三者的区别

  • mvn clean package 依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。
  • mvn clean install依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。
  • mvn clean deploy依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。

由上面的执行流程可知,主要区别如下,

  • package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)部署到本地maven仓库和远程maven私服仓库
  • install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)部署到本地maven仓库,但没有布署到远程maven私服仓库
  • deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)部署到本地maven仓库和远程maven私服仓库


相关文章
|
Java 测试技术 Apache
【Maven】常用命令、插件管理、私服nexus
【Maven】常用命令、插件管理、私服nexus
103 0
|
4月前
|
Java 测试技术 Maven
maven总结一: 常用命令
maven总结一: 常用命令
39 6
|
1月前
|
Java 测试技术 Maven
maven 打包命令
maven 打包命令
27 6
|
1月前
|
Java Linux Maven
IDEA如何用maven打包(界面和命令两种方式)
【10月更文挑战第14天】本文介绍了两种Maven项目打包方法:命令行与IDEA界面。首先确保已安装Maven并配置环境变量,通过`mvn -v`检查安装。命令行打包需进入项目目录,执行`mvn package`,之后在`target`目录查看结果。IDEA打包则需配置Maven路径,打开Maven Projects窗口,双击Lifecycle下的`package`阶段,同样在`target`目录查找生成文件,并在Build窗口查看日志以排查问题。
719 1
|
21天前
|
Java 测试技术 项目管理
maven编译本地代码的命令是什么?
【10月更文挑战第26天】maven编译本地代码的命令是什么?
40 0
|
4月前
|
Java Maven
maven 工程pom依赖优化及常用命令
maven 工程pom依赖优化及常用命令
58 0
|
5月前
|
Java Linux 测试技术
Maven命令大全:从安装到部署,一篇文章带你玩转Maven
本文由木头左介绍Maven,一个用于Java项目管理的工具,涉及Maven的安装配置(Windows和Linux)及核心命令,包括install、package、compile、clean、deploy、test、verify和site。通过这些命令,可以实现构建、打包、编译、测试、部署和生成项目站点等操作。
|
6月前
|
Java Maven 数据安全/隐私保护
Nexus【应用 01】上传jar包到私有Maven仓库的两种方法:手动 Upload 和 mvn deploy 命令(配置+操作流程)
Nexus【应用 01】上传jar包到私有Maven仓库的两种方法:手动 Upload 和 mvn deploy 命令(配置+操作流程)
2447 0
|
5月前
|
Java Maven
蓝易云 - Maven使用mvn命令时跳过test的参数
另外,还有一个参数 `-Dmaven.test.skip=true`也可以用来跳过测试,但是这个参数不仅跳过测试,还会跳过编译测试代码的阶段。所以,如果你的项目中有其他模块依赖测试代码,那么使用 `-Dmaven.test.skip=true`可能会导致构建失败。在大多数情况下,推荐使用 `-DskipTests`参数。
49 0
|
5月前
|
NoSQL Java 网络安全
Redis在java(Maven)中使用,常用基本命令大全,最全Termius怎么进行端口映射(MAC系统最简单教学)
Redis在java(Maven)中使用,常用基本命令大全,最全Termius怎么进行端口映射(MAC系统最简单教学)