在开发中一些公共组件会打包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
目录中。
- 将编译后的代码、资源文件以及其他需要的文件打包成 JAR、WAR 或其他指定的格式。打包后的文件会生成在
-
验证(Verify):
- 验证打包结果的完整性和正确性,确保构建是成功的。
-
安装(Install):
- 将打包生成的 JAR 文件安装到本地 Maven 仓库(
~/.m2/repository
)。这样本地其他项目就可以引用这个 JAR 文件作为依赖。
- 将打包生成的 JAR 文件安装到本地 Maven 仓库(
3. 总结
执行 mvn install
时,Maven 会执行整个生命周期的默认阶段,包括编译、测试、打包和安装。因此,你不需要单独执行 mvn package
,Maven 会在 install
阶段自动完成打包操作。这个命令综合了构建的多个步骤,并将结果安装到本地仓库,便于本地项目引用。