Maven 常用命令

在开发中一些公共组件会打包jar上传到公司的maven私服上,其它团队从私服下载jar包。

如果要发布到私服则执行mvn deploy命令,如果仅是在本地开发执行mvn install命令发布到本地仓库即可。

在 Maven 中,打包和发布项目的过程涉及到不同的命令和操作,这些操作可以帮助你将项目构建成可重用的 JAR 文件,并将其发布到本地或远程 Maven 仓库。以下是对这些操作和常用命令的详细解释:

1. Maven 常用命令

1.1 **`mvn clean`**:

  • **作用**:清理项目的构建输出目录(通常是 `target` 目录)。

  • **用途**:在重新构建项目之前,清理上次构建的遗留文件,确保构建过程是干净的。

1.2 **`mvn compile`**:

  • **作用**:编译项目的源代码。

  • **用途**:编译 `src/main/java` 目录下的 Java 源代码,生成 `.class` 文件。

1.3 **`mvn test`**:

  • **作用**:运行项目中的单元测试。

  • **用途**:执行 `src/test/java` 目录下的测试类,确保代码的正确性。

1.4 **`mvn package`**:

  • **作用**:将项目打包成 JAR 文件或 WAR 文件(根据项目的配置)。

  • **用途**:生成项目的可发布包,通常会在 `target` 目录下生成 `.jar` 或 `.war` 文件。

1.5 **`mvn install`**:

  • **作用**:将打包后的 JAR 文件安装到本地 Maven 仓库。

  • **用途**:将构建生成的 JAR 文件添加到本地 Maven 仓库(`~/.m2/repository`),供本地项目引用。

1.6 **`mvn deploy`**:

  • **作用**:将构建生成的 JAR 文件发布到远程 Maven 仓库(如公司私服或中央仓库)。

  • **用途**:上传构建的 JAR 文件到公司的 Maven 私服,以便其他团队或项目使用。需要在 `pom.xml` 文件中配置远程仓库信息。

1.7 **`mvn verify`**:

  • **作用**:运行所有的测试,包括集成测试,并验证构建的完整性。

  • **用途**:确保所有测试通过且构建是完整的。

1.8 **`mvn clean install`**:

  • **作用**:先清理项目,然后编译、测试并打包项目,最后将 JAR 文件安装到本地仓库。

  • **用途**:一个常用的命令组合,确保构建是干净的并且所有的代码更改都被包含在本地仓库中。

2. mvn install 过程详细说明

如果直接一开始就执行mvn install ,执行 mvn install 命令时,Maven 会按照项目的生命周期自动执行所有相关的构建阶段,包括打包。下面是 mvn install 命令的详细过程:

  • 清理(Clean)

    • 如果之前运行了 mvn clean,则会删除先前构建生成的文件。mvn install 不会自动执行 clean 阶段,但会确保使用最新的构建文件。
  • 编译(Compile)

    • 编译 src/main/java 目录下的 Java 源代码。生成的 .class 文件将被放置在 target/classes 目录中。
  • 测试编译(Test Compile)

    • 编译 src/test/java 目录下的测试源代码。生成的测试 .class 文件将被放置在 target/test-classes 目录中。
  • 测试(Test)

    • 执行项目中的单元测试(如果存在),确保代码的正确性。
  • 打包(Package)

    • 将编译后的代码、资源文件以及其他需要的文件打包成 JAR、WAR 或其他指定的格式。打包后的文件会生成在 target 目录中。
  • 验证(Verify)

    • 验证打包结果的完整性和正确性,确保构建是成功的。
  • 安装(Install)

    • 将打包生成的 JAR 文件安装到本地 Maven 仓库(~/.m2/repository)。这样本地其他项目就可以引用这个 JAR 文件作为依赖。

3. 总结

执行 mvn install 时,Maven 会执行整个生命周期的默认阶段,包括编译、测试、打包和安装。因此,你不需要单独执行 mvn package,Maven 会在 install 阶段自动完成打包操作。这个命令综合了构建的多个步骤,并将结果安装到本地仓库,便于本地项目引用。

相关推荐
轻口味10 分钟前
命名空间与模块化概述
开发语言·前端·javascript
苹果醋31 小时前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
晓纪同学1 小时前
QT-简单视觉框架代码
开发语言·qt
威桑1 小时前
Qt SizePolicy详解:minimum 与 minimumExpanding 的区别
开发语言·qt·扩张策略
Hello.Reader1 小时前
深入解析 Apache APISIX
java·apache
飞飞-躺着更舒服1 小时前
【QT】实现电子飞行显示器(简易版)
开发语言·qt
明月看潮生1 小时前
青少年编程与数学 02-004 Go语言Web编程 16课题、并发编程
开发语言·青少年编程·并发编程·编程与数学·goweb
明月看潮生1 小时前
青少年编程与数学 02-004 Go语言Web编程 17课题、静态文件
开发语言·青少年编程·编程与数学·goweb
Java Fans1 小时前
C# 中串口读取问题及解决方案
开发语言·c#
盛派网络小助手2 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#