天天看点

Maven(四):Maven常用命令,生命周期及插件常用命令生命周期

常用命令

mvn clean 清理项目

mvn compile 编译源代码

mvn test 运行测试

mvn test-compile 编译测试代码

mvn package 打包

mvn install 将包上传到本地仓库

mvn deploy 上传私服

生命周期

Maven的生命周期就是为了对所有的构建过程进行抽象统一,包括:项目清理、初始化、编译、测试、打包、集成测试、验证、部署、站点生成等几乎所有的构建步骤。Maven生命周期是抽象的,这些步骤的实际任务都是由插件来完成

Maven(四):Maven常用命令,生命周期及插件常用命令生命周期

三套生命周期

Maven拥有三套相互独立的生命周期:clean(清理项目)、default(构建项目)、site(建立项目站点)。用户可以江景调用某个生命周期的某个阶段,不会对其他生命周期产生影响。Maven生命周期的阶段与插件目标相互绑定,以完成具体构建任务。对于插件本身,为了能复用代码,往往能完成多个任务,每个任务就是一个插件目标。如maven-dependency-plugin有十多个目标,每个目标对应一个功能:dependency:analyze——分析项目依赖,找出潜在无用依赖;dependency:tree——列出项目依赖书,dependency:list——列出项目所有已解析依赖。

内置绑定

为了让用户几乎不用任何配置就能构建Maven项目,Maven在核心为一些主要生命周期阶段绑定了插件目标

clean生命周期阶段与插件目标的绑定关系

生命周期阶段 插件目标 阶段工作 执行任务
pre-clean - 清理钱需要完成的工作 -
clean maven-clean-plugin:clean 清理上一次构建生成的文件 清理上一次构建生成的文件
post-clean - 清理后需要完成的工作 -

default生命周期阶段与插件目标的绑定关系

生命周期阶段 插件目标 阶段目标 执行任务
validate -
initialize -
generate-sources -
process-sources - 处理主资源文件,对src/main/resources下的内容复制到输出主classpath目录中
genrate-resources -
process-resources maven-resources-plugin:resources 复制主资源文件到主输出目录
compile maven-compiler-plugin:compile 编译主源码,对src/main/java下的文件输出主classpat目录中 编译主代码到主输出目录
process-classes -
generate-test-sources -
process-test-sources maven-resources-plugin:testResources 处理项目测试资源文件,对对src/test/resources下的内容复制到输出测试classpath目录中 复制测试资源文件到测试输出目录
generate-test-resources -
process-test-resources -
test-compile maven-compiler-plugin:testCompile 编译项目测试代码 编译测试代码到测试输出目录
process-test-classes -
test maven-surefire-plugin:test 使用单元测试框架运行测试,测试代码不会被打包或部署 执行测试用例
prepare-package -
package maven-jar-plugin:jar 接受编译好的代码,打成可发布的格式(如jar) 打jar包
pre-integraton-test -
integration-test -
post-integration-test - 将项目输出安装到本地仓库
verify maven-install-plugin:install
install - 将包安装到本地仓库 将项目输出部署到远程仓库
deploy maven-deploy-plugin:deploy 将包复制到远程仓库

site生命周期阶段与插件目标的绑定关系

生命周期阶段 插件目标 阶段目标 执行任务
pre-site - 在生成站点之前需要完成的功能做
site maven-site-plugin:site 生成站点文档
post-site - 生成站点时候需要完成的工作
site-deploy maven-site-plugin:deploy 将站点发布到服务器上

自定义绑定

处理内置绑定用户还能自己选择将某个插件目标绑定到生命周期的某个阶段上。executions下每个execution子元素可以用来配置执行一个任务,通过phase绑定生命周期阶段,通过goal指定插件目标。当多个插件目标绑定到同一个阶段时,目标的执行顺序由插件的声明顺序决定。

org.apache.maven.plugins maven-source-plugin 3.0.0 attach-sources verify jar-no-fork

插件配置

命令行配置

Maven命令中使用-D参数,伴随参数键=参数值得形式,如mvn install -Dmaven.test.skip=true

POM全局配置

使用configuration元素设置参数值

<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-compiler-plugin</artifactId>
		<configuration>
			<source>1.8</source>
			<target>1.8</target>
			<encoding>UTF-8</encoding>
		</configuration>
	</plugin>
           

插件查询

在线

Maven 官方插件

https://maven.apache.org/plugins/index.html

CodeHaus 插件

http://www.mojohaus.org/plugins.html

maven-help-plugin

maven-help-plugin

mvn help:describe -Dplugin=groupId:artifactId:version -D参数,如:

mvn help:describe -Dplugin=org.apache.maven.plugins:maven-source-plugin:3.0.0 -Ddetail -Dgoal=jar-no-fork(其中-Dgoal描述某个插件目标信息,-Ddetail描述更详细信息)

或者简写,用goal prefix替代groupId:artifactId,省略version,默认获取最新版:mvn help:describe -Dplugin=goal prefix -D参数,如:mvn help:describe -Dplugin= source

其中goal prefix可以通过插件描述中找到。

Maven(四):Maven常用命令,生命周期及插件常用命令生命周期

此外,还能找到bound to phase,是生命周期默认绑定的阶段,当自定义绑定中不写phase,那么会在goal默认绑定的阶段执行该插件目标。

Maven(四):Maven常用命令,生命周期及插件常用命令生命周期

插件仓库

通过pluginRepository元素配置,其余与repostory一样,在超级POM中(Maven安装目录下lib/maven-model-builder-3.2.5.jar中,解压缩找到org\apache\maven\model\pom-4.0.0.xml)也有配默认地址——中央仓库

central Central Repository https://repo.maven.apache.org/maven2 default false never

同时在超级POM中还制定了核心插件的默认版本,当别的插件没有指定版本时,Maven将取最新的release版本。

Maven(四):Maven常用命令,生命周期及插件常用命令生命周期

*

參考: 《Maven实战》