maven中的lifecycle、phase和goal

maven 有三大 生命周期(lifecycle),每个生命周期下有若干 阶段(phase),阶段由插件来实现,与插件提供的 目标(goal) 绑定

① 一个插件可以提供多个 goal,分别绑定到多个 phase 上;一个 phase 也可以绑定不同插件的多个 goal ,即多对多的关系

② 执行 phase 实际执行的是 goal,如果一个 phase 没有绑定 goal,那这个 phase 就不会被执行

③ 执行一个 phase 将会执行这个 lifecycle 前面的所有 phase

clean lifecycle 清理工作

pre-clean:执行一些需要在clean之前完成的工作
clean:移除所有上一次构建生成的文件
post-clean:执行一些需要在clean之后立刻完成的工作

default lifecycle 构建的核心部分,编译,测试,打包,部署等等

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:将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

site lifecycle 生成项目报告,站点,发布站点

pre-site:执行一些需要在生成站点文档之前完成的工作
site:生成项目的站点文档
post-site:执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy:将生成的站点文档部署到特定的服务器上

一、如何简化的确定一个插件,即 前缀:目标

① 对于官方插件的 artifactId 命名:maven-${prefix}-plugin,例如 jar:jar 实际指的是 maven-jar-plugin 这个插件的 jar 目标

② 对于第三方插件的 artifactId 命名:${prefix}-maven-plugin,例如 tomcat7:run 实际指的是 tomcat7-maven-plugin 这个插件的 run 目标

二、在控制台运行 goal 的命令格式:

mvn <plugin-prefix>:<goal> 或者 <plugin-group-id>:<plugin-artiface-id>[:<plugin-version>]:<goal>

三、如何知道某个插件中包含哪些 goal

① 通过插件前缀查询,mvn help:describe -Dplugin=${prefix},如下:

mvn help:describe -Dplugin=compiler

② 通过完整坐标查询,mvn help:describe -Dplugin=groupId:artifactId:version,如下:

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

四、跳过测试插件目标

mvn clean install -D maven.test.skip=true
posted @ 2025-08-14 09:13  鹿鹿脖子长  阅读(42)  评论(0)    收藏  举报