Maven中的几个重要概念:lifecycle, phase 和 goal

Maven中的几个重要概念:lifecycle, phase 和 goal_第1张图片

 

 

当我们对一个项目进行打包时,maven分别执行了

验证(validate) ==> 编译源码(compile) ==> 编译测试源码(test-compile) ==> 单元测试(test) ==> 打包(package)

这个过程就是生命周期(lifecycle)。在生命周期的过程中会有很多的阶段(phase),这些阶段按照既定的顺序执行来完成一个项目的构建。

 

在生命周期中,各个阶段的工作由插件来完成(plugin),一个插件通常可以完成一个或者多个阶段的工作。每个阶段的工作对应插件中的一个目标(goal)。不同的插件结合起来,就完成了整个项目的构建。

 

maven的生命周期可以分为三大类

 

1.Clean Lifecycle :在进行真正的构建之前进行一些清理工作

 

Maven中的几个重要概念:lifecycle, phase 和 goal

 

 

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

clean 移除所有上一次构建生成的文件

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

2.Site Lifecycle :生成项目报告,站点,发布站点

 

Maven中的几个重要概念:lifecycle, phase 和 goal_第2张图片

 

 

pre-site 执行一些需要在生成站点文档之前完成的工作

site 生成项目的站点文档

post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

site-deploy 将生成的站点文档部署到特定的服务器上

然后看,最常用,最重要的,名字却不起眼的

3.Default Lifecycle : 构建的核心部分,编译,测试,打包,部署等等

 

Maven中的几个重要概念:lifecycle, phase 和 goal_第3张图片

 

 

validate 验证工程是否正确,所需的信息是否完整

initialize 初始化构建平台,例如:设置properties或创建目录

generate-sources

process-sources

generate-resources

process-resources 复制并处理资源文件,至目标目录,准备打包

compile 编译源代码

process-classes 源码编译后的后期处理,比如java字节码的增强(优化?)

generate-test-sources

process-test-sources

generate-test-resources

process-test-resources

test-compile 编译测试源代码(默认是test目录下)

process-test-class

test 执行单元测试

prepare-package

package 将工程文件打包为指定的格式,例如JAR,WAR等

pre-integration-test

integration-test 集成测试

post-integration-test

verify 检查package是否有效、符合标准

install 将包安装至本地仓库,以让其它项目依赖。

deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

 

上面是对生命周期及生命周期对应的阶段的介绍。下面说明下插件中目标(goal)的查询方式

 mvn help:describe -Dplugin=org.apache.maven.plugins:maven-eclipse-plugin:2.10

 

下面是一个使用了phase和goal的小例子

            
                org.codehaus.mojo
                exec-maven-plugin
                1.2.1
                
                    
                        
                        compile
                        
                            
                            java
                        
                        
                            x.x.x.HelloWord
                        
                    
                
            

这个配置会在编译时执行HelloWord类的man方法。

https://dwz.cn/VcdZbQeB

你可能感兴趣的:(java基础,工具相关)