maven生命周期和插件

生命周期和插件是maven的两个核心概念。在maven日常使用中,命令行的输入往往就对应了生命周期。如mvn package就表示执行默认生命周期阶段package。maven生命周期是抽象的,其实际行为都是有插件完成的,package阶段的任务会由maven-jar-plugin完成。

1 生命周期

maven对项目构建的生命周期进行抽象和统一,总结出项目的清理、初始化、编译、测试、打包、集成测试、验证、部署、站点生成等构建步骤。各构建步骤的具体实现由插件来完成,每一个构建过程绑定一个或多个插件行为,maven为大多数构建过程绑定了默认插件。用户也可根据需要配置或编写自定义插件。

maven有三套独立的生命周期,分别为clean、default、site。

1.1 clean生命周期

clean生命周期的目的是清理项目,包含三个阶段:

1)pre-clean:执行一些清理前需要完成的工作

2)clean: 清理上一次构建生成的文件

3)post-clean:执行一些清理后需要完成的工作

1.2 default生命周期

default生命周期定义了真正构建时所需要执行的所有步骤。

1)validate

2) initialize

3) generate-sources

4) process-sources 处理项目主资源文件。

5)generate-resources

6) process-resources

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-intergration-test

19) intergration-test

20) post-intergration-test

21) verify

22) install 将包安装到maven本地仓库

23) deploy 将包复制到远程仓库

1.3 site生命周期

site生命周期的目的是建立和发布站点

1.4 命令行与生命周期

  • mvn clean 调用clean生命周期的clean阶段,实际执行阶段为clean生命周期的pre-clean和clean阶段
  • mvn test 调用default生命周期的test阶段,实际执行的阶段为default生命周期的validate、initalize等,直到test的所有阶段

2 插件

一个插件往往能够完成多个功能,每一个功能对应一个插件目标。如maven-dependency-plugin有十多个目标,dependency:analyze(项目依赖分析)、dependency:tree(依赖树)、dependency:list(依赖列表)。这是一种通用写法,冒号前面是插件前缀,冒号后面是该插件的目标。类似还可以写出compiler:compile(maven-compiler-plugin)和surefire:test(maven-surefire-plugin)

3 maven命令

  • 使用maven-help-plugin插件 mvn help:describe -Dplugin=org.apache.maven.plugin:maven-compiler-plugin:2.1  这里执行的是maven-help-plugin插件的describe目标。在参数plugin中输入需要描述插件的groupId、artifactId和version。输出结果包括该插件的坐标、目标前缀和目标等。
  • mvn install -Dmaven.test.skip=true 执行install,跳过测试  或者 mvn install -DskipTests   
    • -DskipTests 仅跳过测试运行,测试代码会进行编译
    • -Dmaven.test.skip=true 跳过测试代码编译和测试运行 maven.test.skip同时控制maven-compiler-plugin和maven-surefire-plugin这两个插件的行为
  • mvn -h 显示maven的命令帮助, 可看到mvn [options] [<goal(s)>] [<phase(s)>]

 

posted @ 2022-09-26 17:26  开坦克的舒克  阅读(71)  评论(0编辑  收藏  举报