mvn 是 Apache Maven 提供的命令行工具,用于在命令行终端或 IDE(如 IntelliJ IDEA)的 Terminal 中执行各种构建任务。从简单的项目构建到复杂的插件执行,mvn 提供了丰富的命令集合以满足不同需求。本文将详细讲解 mvn 命令的用法,帮助小白从零开始掌握 mvn 的核心功能。
对于 Java 开发者来说,mvn 是 Maven 工具的核心接口之一。它通过命令行直接执行 Maven 的核心功能,例如编译代码、运行测试、打包项目以及部署到远程仓库。
与图形化界面相比,mvn 命令更灵活,适合自动化构建场景,也更利于脚本化操作。在本文中,我们会按实际使用场景逐步讲解每个常用命令,并配合示例代码,帮助大家轻松上手。
以下是 mvn 的一些常用基础命令:
清理项目的 target 目录,通常在重新编译或打包之前使用。
mvn clean功能:删除 target 目录,确保没有旧的构建文件残留。
示例:
$ mvn clean
[INFO] Scanning for projects...
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ my-project ---
[INFO] Deleting /path/to/your/project/target
[INFO] ------------------------------------------------------------------------编译项目中的源代码。
mvn compile功能:将 src/main/java 中的源代码编译为字节码,输出到 target/classes。
示例:
$ mvn compile
[INFO] Scanning for projects...
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ my-project ---
[INFO] Compiling 10 source files to /path/to/your/project/target/classes
[INFO] ------------------------------------------------------------------------运行项目中的单元测试。
mvn test功能:执行 src/test/java 中的测试用例。
示例:
$ mvn test
[INFO] Scanning for projects...
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ my-project ---
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------打包项目,将编译后的代码和资源文件打包为 .jar 或 .war 文件。
mvn package功能:根据项目的配置,生成可运行的包文件。
示例:
$ mvn package
[INFO] Scanning for projects...
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ my-project ---
[INFO] Building jar: /path/to/your/project/target/my-project-1.0.jar
[INFO] ------------------------------------------------------------------------将打包后的文件安装到本地仓库。
mvn install功能:在本地 .m2 仓库中保存打包的文件,以便其他项目依赖。
示例:
$ mvn install
[INFO] Scanning for projects...
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ my-project ---
[INFO] Installing /path/to/your/project/target/my-project-1.0.jar to /home/user/.m2/repository/com/example/my-project/1.0/my-project-1.0.jar
[INFO] ------------------------------------------------------------------------显示项目的依赖树,便于分析依赖关系。
mvn dependency:tree示例输出:
[INFO] com.example:my-project:jar:1.0
[INFO] +- org.springframework:spring-core:jar:5.3.20:compile
[INFO] | \- org.springframework:spring-jcl:jar:5.3.20:compile
[INFO] +- junit:junit:jar:4.13.2:test
[INFO] \- org.hamcrest:hamcrest-core:jar:1.3:test检查项目依赖项是否有更新。
mvn versions:display-dependency-updates功能:帮助及时更新项目依赖。
解决方法:
export PATH=$PATH:/path/to/maven/bin解决方法:
配置国内镜像(如阿里云)到
settings.xml<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>Aliyun Maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>通过本篇文章,我们从基础命令到高级用法,详细讲解了 mvn 的常见操作以及问题解决方法。掌握这些命令后,你将能够更加高效地管理 Java 项目,快速构建、测试和部署。