Maven实战学习笔记2

来源:互联网 发布:淘宝店铺首页显示不全 编辑:程序博客网 时间:2024/03/29 07:50

Chap 07 生命周期和插件

1.除了坐标、依赖和仓库,Maven另外的核心概念是生命周期和插件。命令输入的命令对应着生命周期,生命周期是抽象的,其行为通过插件来完成。

2.Maven有三种独立的生命周期:clean清理、default编构建和site建立和发布项目站点。每个生命周期分为不同的阶段,例如clean分为pre-cleancleanpost-clean。阶段是有顺序的,比如执行clean生命周期会调用pre-cleanclean

3.clean生命周期:

a) pre-clean:清理前工作

b) clean:清理工作

c) post-clean:清理后工作

4.default生命周期:定义构建所需的所有步骤

a) Validate:验证

b) Initialize:初始化

c) generate-sources:代码生成

d) process-source:处理项目主资源文件。对src/main/resource内容进行变量替换,赋值到项目输出的主claspath中。

e) generate-resources:资源生成

f) process-resources:资源处理

g) Compile:编译src/main/java下的java文件至主classpath目录中

h) process-classes:处理编译后的classes

i) generate-test-sourcesprocess-test-sourcesgenerate-test-resources-process-test-resourcestest-compileprocess-test-classes类似

j) test:使用单元测试框架运行测试,测试代码不会打包或者部署。

k) prepare-packagepackage:打包相关

l) pre-integration-testintegration-testpost-integration-test:集成测试相关

m) verify

n) Install:安装到本地maven

o) Deploy:部署到远程仓库

5.site生命周期:建立和发布项目站点

a) pre-site

b) Site:生成项目站点文档

c) post-site

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

6.命令行与生命周期:通过命令行调用maven生命周期,生命周期的不同阶段是前后依赖的。

a) Mvn clean:调用pre-cleanclean阶段。

b) Mvn test:调用default生命周期的的test阶段。包括test之前的所有阶段。

c) Mvn clean installclean生命周期的clean阶段和default生命周期的install阶段。

7.生命周期是通过插件完成的,一个插件可能包含多个目标,可以通过插件别名:目标的方式调用特定的目标,例如:compilercompile,调用maven-compiler-plugincompile目标。

8.生命周期需要与插件的目标进行绑定:

a) 内置绑定:

i. Clean生命周期:maven-clean-plugin:clean与生命周期中的clean阶段绑定。

ii. Site生命周期:maven-site-plugin:sitesite绑定,maven-site-plugin:deploysite-deploy绑定。

iii. Default生命周期:与打包类型(pom.xml中的packaging)有关,jar类型的绑定关系如下。

生命周期阶段

插件目标

执行任务

process-resources

maven-resources-plugin:resources

复制主资源文件至主输出目录

compile

maven-compile-plugin:compile

编译主代码至主输出目录

process-test-resources

maven-resources-plugin:testRresources

复制测试资源文件至测试输出目录

test-compile

maven-compiler-plugin:testCompile

编译测试代码至测试输出目录

test

maven-surefire-plugin:test

执行测试用例

package

maven-jar-plugin:jar

创建项目jar

install

maven-install-plugin:install

将项目输出构件安装到本地仓库

deploy

maven-deploy-plugin:deploy

将项目输出构件部署到远程仓库

b) 自定义绑定:如制作源码jar,可以自定义绑定到default生命周期的某个阶段。可以使用maven-help-plugin插件(mvn helpdescribe  -Dplugin=org.apache.maven.plugins:xxx)查看具体插件默认绑定的阶段,例如:

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

9.插件配置:

a) 命令行配置:-D参数键=参数值的形式,如:mvn install -Dmaven.test.skip=true跳过测试阶段。

b) Pom.xml中配置:

i. 全局配置:plugin标签下configuration定义插件的通用配置,如maven-compile-plugin配置java版本信息。

ii. 任务配置:通过plugin下的execution配置maven插件目标与生命周期的对应关系,此时configuration标签位于execution目录下,表示为认为配置而不是全局配置。

10.命令行执行插件goal

a) 插件goal能与生命周期中的不同阶段绑定。

b) 提供插件目标前缀简化插件执行:如下命令效果一样:

Mvn help:describe -Dplugin=compiler

#helpmaven-help-plugin的目标前缀

Mvn org.apache.maven.plugins:maven-help-plugin:2.1:describe -Dplugin=compiler

#groupId:org.apache.maven.plugins,artifactId:maven-help-plugin,version:2.1,goal:describe,参数通过-D传递

11.pluginRepositoriespluginRespository配置插件仓库,默认groupIdorg.apache.maven.plugins可以省略

原创粉丝点击