咱们可能都知道maven是什么?Maven 是一个盛行的项目办理东西,用于构建、发布和办理 Java 项目。那么咱们在用maven将项目打包成一个jar包的时候,他是怎样运作的,mvn clean install都做了哪些小动作?其中的package和install有什么区别?deploy指令又是干什么的?不知道这些问题咱们有没有想过?
Maven生命周期包含三个首要阶段:clean、default、site。
-
clean生命周期:用于整理项目,包含删去target目录中生成的文件。
-
default生命周期:包含validate、initialize、generate-sources、process-sources、generate-resources、process-resources、compile、process-classes、generate-test-sources、process-test-sources、generate-test-resources、process-test-resources、test-compile、process-test-classes、test、prepare-package、package、pre-integration-test、integration-test、post-integration-test、verify、install、deploy等阶段。
-
site生命周期:用于生成项目站点文档等内容。
而咱们这次就讲idea中的首要用到的指令,咱们先来看一张图(idea中的maven东西栏,默许在idea的右侧):
这里有这么多指令,咱们知道他们的详细作用是干嘛的吗?而他们又做了哪些小动作呢?这些统称为maven的生命周期。首先咱们来了解他们之前先看一下maven的本地库房:
上面就是maven的本地库房,即maven默许会从本地拿到项目中用到的jar包,假如没有就会从中心库房拉,之后在存到本地里面。简单介绍一下,废话不多说,咱们现在开端介绍maven的生命周期。开端之前想跟咱们说一个冷知识:
履行maven指令和直接点击idea中的maven菜单按钮都是能够的,可是假如手动履行maven指令的化,需要添加许多的参数,例如默许只会读取默许的setting文件,而idea中的maven菜单则会根据项目的maven现已设置过的东西进行参数的拼接(他的底层也是履行maven的指令)
咱们现在有一个项目的pom文件长这样(他是一个springboot项目)
clean:整理项目,删去之前构建生成的文件
现在咱们在项目运转的过程中生成了一个jar包。假如咱们运转clean的话,这个时候,咱们就会发现项目目录下的target
文件夹就会被清除去。
validate: 验证项目是否正确,查看项目是否契合标准
它首要做了下面几个验证: 验证项目是否有pom.xml文件。 验证pom.xml文件是否契合Maven的XML格局要求。 验证所有必要的属性是否现已设置。 验证项目的依靠是否正确,无误。 验证编译源代码的编码是否正确。
例如咱们把pom文件删掉
然后履行咱们的mvn validate
他就会检测失利,而添加之后再次履行,就会履行成功了
compile:编译项目源代码,将源代码编译成可履行的字节码
这个指令是会生成target目录下面的classes文件,这个里面则是编译好的字节码文件,假如有main函数则是能够直接运转的
test:运转测验代码,履行单元测验和集成测验
例如咱们现在有个一单元用例:
package com.wangfugui.apprentice;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class ApprenticeApplicationTests {
@Test
public void test() {
System.out.println("测验");
}
}
咱们履行这个指令之后就会把这个单元用例里面的每个方法都履行一遍:
package:将编译后的代码打包成可分发的格局,如 JAR、WAR 等。
这个指令默许会在target目录下生成jar包,假如有maven插件指定生成途径则是另说。
verify:对集成测验的成果进行验证,确保测验经过
它其实也会履行单元测验,可是他和test有什么区别呢?为了验证他们的区别,咱们需要引进一个maven的插件
<build>
<plugins>
<!-- 插件用于履行静态代码剖析 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<id>validate</id>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
maven-checkstyle-plugin 用于履行静态代码剖析,详细功能包含:
- 代码风格查看:查看代码是否契合预界说的代码风格标准,如缩进、命名标准、代码注释等。
- 代码质量查看:剖析代码质量,发现潜在的代码问题,如未运用的变量、重复的代码、复杂的逻辑等。
- 代码标准性查看:查看代码是否契合编码标准,帮助团队保持一致的编码风格和标准。
咱们履行verify
就会发现测验失利了,原因是这个类缺少空行结束,现在咱们把他修正,咱们就会发现刚刚那个过错就没有了。
可是这个在实际项目的过程中并不会用到(谁去检测是否以换行结束啊。。。)咱们了解一下就行。
install:将包安装到本地库房,供本地其他项目运用
这个指令就要说道咱们前面提到的本地maven库房了,履行这个指令之后,maven会把打出的jar包放入咱们的maven本地库房,这样其他的项目就能够引证这个jar包了
site:生成项目站点文档,包含项目陈述、文档和静态内容
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.9.1</version>
</plugin>
</plugins>
</build>
试图这个功能之前,需要引进一个maven的插件。maven-site-plugin 是 Maven 中的一个核心插件,用于生成项目站点文档。经过装备这个插件,咱们能够在 Maven 构建过程中履行 site 指令来生成项目站点文档。以下是这个插件的一些首要功能和用处:
- 生成项目站点文档:maven-site-plugin 插件用于生成项目站点文档,包含项目陈述、文档和静态内容,以展现项目的信息和文档。
- 集成各种陈述:该插件能够集成各种 Maven 陈述,如测验陈述、代码覆盖率陈述、静态代码剖析陈述等,以展现项目的各种指标和成果。
- 自界说站点内容:您能够经过装备插件参数来自界说生成的站点内容,包含添加额外的文档、陈述和静态资源。
- 支撑多种输出格局:maven-site-plugin 支撑生成站点文档的多种输出格局,如 HTML、PDF 等,以满意不同的需求。
例如咱们履行完项目文件之后会在target/site
目录下面生成一个静态网站:
咱们点开看看是这样的:
默许情况下,经过 Maven 的 maven-site-plugin 插件生成的项目站点文档通常包含以下内容:
- 项目概况:包含项目的名称、描述、版别号等基本信息。
- 项目陈述:包含各种 Maven 插件生成的陈述,如测验陈述、代码覆盖率陈述、静态代码剖析陈述等。
- 项目结构:展现项目的目录结构、模块依靠关系等信息。
- 开发者信息:列出项目的开发者、贡献者等相关信息。
- 源码文档:包含 Java 源代码的文档,通常是经过 Javadoc 东西生成的 API 文档。
- 邮件列表:列出项目相关的邮件列表信息。
- 版别操控信息:包含项目的版别操控信息,如提交记载、分支信息等。 问题追踪:列出项目的问题追踪系统信息,如 JIRA、Bugzilla 等。
- 构建信息:展现项目的构建信息,包含构建时间、构建环境等。
- 发布信息:包含项目的发布信息,如发布版别、发布日期等。
deploy:将最终包复制到远程库房,供其他开发人员或项目运用
这里会打包发布到中心的maven库房,这样不论别人在哪都能够直接拉你的jar到他的项目中去运用,咱们能够参阅我之前写的博客: 如何发布jar包到maven中心库房(2024年3月最新版保姆级教程)