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 阶段自动完成打包操作。这个命令综合了构建的多个步骤,并将结果安装到本地仓库,便于本地项目引用。

相关推荐
星夜孤帆几秒前
LeetCode之数组/字符串
java·算法·leetcode
ERIC-ZI1 小时前
Segger Embedded Studio 的使用
开发语言
lzb_kkk1 小时前
【Redis】redis5种数据类型(list)
开发语言·数据库·redis
bingo6911 小时前
Qt-常用控件(3)-多元素控件、容器类控件和布局管理器
开发语言·qt
蒙娜丽宁1 小时前
深入探讨Go语言中的切片与数组操作
开发语言·后端·golang·go
GISer小浪花努力上岸3 小时前
Java实现简易计算器功能(idea)
java·开发语言·intellij-idea
2401_858120533 小时前
深入理解 Swift 中的隐式解包可选类型(Implicitly Unwrapped Optionals)
开发语言·ios·swift
quaer3 小时前
QT chart案例
开发语言·qt·swift
海海向前冲3 小时前
设计模式 -- 单例设计模式
java·开发语言·设计模式
就这样很好8803 小时前
排序算法总结
java·算法·排序算法