Maven拾遗

Maven的设计哲学是Convention over configuration(惯例先于配置),在本文中,你将会了解到如下的五个技术细节,这些内容我在最近的面试中也会去问候选人:

maven clean package、install、deploy的区别

maven的生命周期

maven常用插件

maven结合Gitlab Runner执行CI/CD单元测试

maven依赖排除

一、maven clean package、install、deploy的区别

一表胜千言、生命周期表

9930763-d97056a5c12c0dad

功能表

9930763-5919f963b8231167

如果用mvn install后,新改的内容不生效,一定要后来使用mvn clean install 才生效

插件说明:

maven-war-plugin将工程打包成war,maven-jar-plugin将工程打包成jar

maven-install-plugin会将打好的war包放入本地开发环境的maven版本库中。

二、Maven生命周期

Maven的生命周期就是对所有构建过程抽象与统一,包含项目的清理、初始化、编译、测试、打包、集成测试、验证、部署、站点生成等几乎所有的过程(可以简化为编译->测试->打包->部署)。几乎所有项目的构建,都能映射到这样一个生命周期上。

Maven有三套相互独立的生命周期,分别是clean(清理项目)、default(构建项目)和site(建立项目站点),用户可以分别仅仅调用clean生命周期的每个阶段。

(一)clean生命周期

此周期的目的是清理项目,它包含三个阶段:

(1)pre-clean:执行一些需要在clean之前完成的工作

(2)clean:移除所有上一次构建生成的文件

(3)post-clean:执行一些需要在clean之后立刻完成的工作

9930763-6aaf274df1f6966e

(二)default生命周期

最核心的生命周期,构建的核心部分,编译,测试,打包,部署等等。它包含的阶段如下:

初始化、编译、测试、打包、集成测试、验证、部署

1) validate 验证项目是否正确和所有需要的相关资源是否可用

2) initialize 初始化构建

3) generate-sources

4)   process-sources 处理源代码

5) generate-resources 

6)   process-resources 处理项目主资源文件。对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中

7) compile 编译项目的主源代码

8) process-classes

9)   generate-test-sources

10) process-test-sources 处理项目测试资源文件

11)generate-test-resources

12)  process-test-resources 处理测试的资源文件

13)test-compile 编译项目的测试代码

14)process-test-classes

15)  test 使用单元测试框架运行测试,测试代码不会被打包或部署

16)prepare-package 做好打包的准备

17)package 接受编译好的代码,打包成可发布的格式

18)  pre-integration-test

19)  integration-test

20)  postintegration-test

21)  verify

22)  install 将包安装到Maven本地仓库,供本地其他Maven项目使用

23)deploy 将最终的包复制到远程仓库,供其他开发人员和Maven项目使用

(三)site生命周期

site生命周期的目的是建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息。该生命周期包含如下阶段:

1)pre-site 执行一些在生成项目站点之前需要完成的工作

2)site 生成项目站点文档

3)post-site 执行一些在生成项目站点之后需要完成的工作

4)site-deploy 将生成的项目站点发布到服务器上

三、Maven常用插件

9930763-19f39908419f17ef
9930763-18b7785523f64ae5

clean插件maven-clean-plugin

resources插件maven-resources-plugin

compile插件maven-compiler-plugin

单元测试插件maven-surefire-plugin

打包插件maven-jar-plugin、maven-war-plugin、maven-assembly-plugin、maven-shade-plugin

发布插件maven-install-plugin 

四、maven结合Gitlab Runner执行CI/CD单元测试

Gitlab 除了基本的版本管理功能之外,还有持续集成能力,在项目根目录中编写一段 .gitlab-ci.yml,就能让 Gitlab 按照其中的指示完成持续集成的工作

Gitlab CI/CD 是 Gitlab 的组件,它利用 Gitlab Runner 来执行具体的构建任务

具体创建Maven 的 Runner的方式可以参照这篇文章:使用 Maven 运行单元测试

转载于:https://www.jianshu.com/p/8baad23e7307

猜你喜欢

转载自blog.csdn.net/weixin_33953384/article/details/91242744