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

相关推荐
小五Five几秒前
TypeScript项目中Axios的封装
开发语言·前端·javascript
小曲程序几秒前
vue3 封装request请求
java·前端·typescript·vue
前端每日三省2 分钟前
面试题-TS(八):什么是装饰器(decorators)?如何在 TypeScript 中使用它们?
开发语言·前端·javascript
凡人的AI工具箱15 分钟前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang
陈王卜18 分钟前
django+boostrap实现发布博客权限控制
java·前端·django
小码的头发丝、18 分钟前
Spring Boot 注解
java·spring boot
java亮小白199723 分钟前
Spring循环依赖如何解决的?
java·后端·spring
飞滕人生TYF29 分钟前
java Queue 详解
java·队列
chnming198731 分钟前
STL关联式容器之map
开发语言·c++
进击的六角龙33 分钟前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python