maven install和package 有什么区别
在 Maven 中,mvn install 和 mvn package 都是用于构建项目的命令,但它们的作用范围和执行结果有明显区别:
package 都是用于构建项目的命令,但它们的作用范围和执行结果有明显区别:
1. mvn package:打包项目
核心作用:将项目编译后的 class 文件、资源文件等打包成指定格式的归档文件(如 JAR、WAR、EAR 等,由 pom.xml 中的 标签指定)。
执行流程:会依次执行 compile(编译)→ test(运行测试)→ package(打包)阶段。
产物位置:打包后的文件生成在项目的 target/ 目录下(例如 target/xxx.jar)。
适用场景:仅需要得到可执行的打包文件,用于本地运行或手动部署。
2. mvn install:安装到本地仓库
核心作用:在 package 命令的基础上,将打包好的文件安装到本地 Maven 仓库(默认路径为 ~/.m2/repository)。
执行流程:会先执行 package 阶段的所有操作,然后额外执行 install 阶段,将包推送至本地仓库。
产物位置:
项目的 target/ 目录下会生成打包文件(同 package)。
本地仓库中会生成对应的目录结构(如 groupId/artifactId/version/xxx.jar),供其他本地项目依赖。
适用场景:当当前项目需要被本地其他项目作为依赖引用时(例如多模块项目中,模块 A 依赖模块 B,需先 install 模块 B)。
特性 | mvn package | mvn install |
---|---|---|
主要操作 | 打包项目到 target/ 目录 | 打包项目 + 安装到本地仓库 |
依赖可用性 | 仅当前项目可见 | 本地所有 Maven 项目可通过依赖引用 |
执行阶段 | 包含 package 所有阶段 + 额外的 install | 包含 package 所有阶段 + 额外的 install |
典型使用场景 | 本地运行、手动部署 | 被其他本地项目依赖、多模块项目构建 |
简单说:package 是 “打包到项目内”,install 是 “打包并发布到本地仓库”。如果只是自己用,package 足够;如果需要被其他项目引用,必须用 install。