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

相关推荐
海阔天空_2013几秒前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
天下皆白_唯我独黑8 分钟前
php 使用qrcode制作二维码图片
开发语言·php
小灰灰__8 分钟前
IDEA加载通义灵码插件及使用指南
java·ide·intellij-idea
夜雨翦春韭11 分钟前
Java中的动态代理
java·开发语言·aop·动态代理
小远yyds13 分钟前
前端Web用户 token 持久化
开发语言·前端·javascript·vue.js
何曾参静谧25 分钟前
「C/C++」C/C++ 之 变量作用域详解
c语言·开发语言·c++
程序媛小果32 分钟前
基于java+SpringBoot+Vue的宠物咖啡馆平台设计与实现
java·vue.js·spring boot
追风林37 分钟前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
芒果披萨1 小时前
El表达式和JSTL
java·el
q567315231 小时前
在 Bash 中获取 Python 模块变量列
开发语言·python·bash