当前位置: 首页>编程语言>正文

maven lifecycle plugins区别 maven的lifecycle的用法

maven lifecycle plugins区别 maven的lifecycle的用法,maven lifecycle plugins区别 maven的lifecycle的用法_maven,第1张

 

 

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

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

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

 

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

 

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

 

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

 

maven lifecycle plugins区别 maven的lifecycle的用法,maven lifecycle plugins区别 maven的lifecycle的用法_生命周期_02,第2张

 

 

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

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

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

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

 

maven lifecycle plugins区别 maven的lifecycle的用法,maven lifecycle plugins区别 maven的lifecycle的用法_java_03,第3张

 

 

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

site 生成项目的站点文档

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

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

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

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

 

maven lifecycle plugins区别 maven的lifecycle的用法,maven lifecycle plugins区别 maven的lifecycle的用法_maven_04,第4张

 

 

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的小例子

<plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <executions>
                    <execution>
                        <!-- 绑定到编译的生命周期 -->
                        <phase>compile</phase>
                        <goals>
                            <!-- 执行目标java -->
                            <goal>java</goal>
                        </goals>
                        <configuration>
                            <mainClass>x.x.x.HelloWord</mainClass>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

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


https://www.xamrdz.com/lan/5b81963672.html

相关文章: