实用maven笔记一概念&构建

maven,作为我现在每天都会使用的工具,却发现我还有很多地方了解的迷迷糊糊。老大就曾说过我的一个问题在于,做事情不够精细。大概就是太浮于表面吧。最近突然非常想把maven撸一遍。豆瓣搜了下高分书籍,还真找到一本《Maven实战》,看完真的好多知识点拨开云雾见月明。俗话说好记性不如烂笔头,本系列文章主要从概念、构建功能、管理、仓库、多模块打包几个方面记录知识点。

maven——既是一个异常强大的构建工具,也是一个项目依赖管理和信息管理的工具。作为构建工具,其主要功能包括清理、编译、测试、打包部署;同时maven可通过仓库自动下载和管理依赖构件。

概念解释

  • 构件(artifact):任何一个依赖、插件或者项目构建的输出包,如war或jar

  • 构建:将项目代码通过工具编译、打包生成输出包的过程

  • 生命周期:构建目标的执行顺序,是一个良好定义的序列,在maven中是抽象概念。

maven安装

maven的安装方法比较简单,网上也有很多教程,这里简单描述下载linux下的安装过程:

1. 环境要求:安装java 

2.官网下载maven,解压 

3.配置环境变量M2_HOME,配置环境变量path,添加bin目录

maven包文件目录

maven包下载解压后,可以看到解压包里有多个文件夹,各文件夹主要作用如下: 

bin:运行脚本,包含mvn和mvnDebug,mvnDebug可以在运行Maven时开启debug调试Maven

boot:maven的类加载器

conf:包含settings.xml,可在机器上全局定制Maven行为;推荐使用~/.m2/settings.xml,只在用户级别定制Maven行为

lib:包含Maven运行时需要的Java类库

构建功能

maven首先是一个强大的构建工具。其构建功能与其生命周期及插件息息相关。maven的生命周期为抽象概念,实际行为由插件完成。maven会在需要时下载并使用插件。

  • 生命周期

maven有三套相互独立的生命周期:clean清理项目、default构建项目,site建立站点。每个生命周期包含一些阶段,且后面的阶段依赖于前面阶段的执行。其生命周期包含的阶段如下表所示。可单独执行某一个周期,但是选择周期中的某个phase时,该周期中该phase之前的阶段均会被执行。

周期

阶段(phase)

clean

pre-clean/clean/post-clean

default

validate/initialize/generate-sources/process-sources/generate-resources/process-resources/compile/process-classes/generate-test-sources/process-test-sources/generate-test-resources/process-test-resources/test-compile/process-test-classes/test/prepare-package/package/pre-integration-test/integration-test/post-integration-test/verify/install/deploy

site

pre-site/site/post-site/site-deploy

  • 内置绑定

如前文所述,生命周期知识maven的抽象概念,真正的执行行为依赖于插件。maven的生命周期和插件之间存在内置绑定(若某个阶段默认未绑定任何插件,则也没任何实际行为),且由项目打包类型决定。例如jar包类型的生命周期与默认绑定:

生命周期阶段 插件目标(goal) 功能

clean

maven-clean-plugin:clean

 

site

maven-site-plugin:site

 

site-deploy

maven-site-plugin:deploy

 

process-resources

maven-resources-plugin:resources

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

compile

maven-compiler-plugin:compile

 

process-test-resources

maven-resources-plugin:testResources

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

test-compile

maven-compiler-plugin:testCompile

 

test

maven-surefire-plugin:test

 

package

maven-jar-plugin:jar

 

install

maven-install-plugin:install

安装到本地仓库

deploy

maven-deploy-plugin:deploy

将项目的构建输出文件部署到远程仓库,需在pom配置仓库地址

  • 自定义绑定

除了内置绑定外,也可以通过pom文件的build-plugins-plugin元素对插件进行自定义绑定,其主要配置标签和格式如下图。其中:

  1. groupId+artifactId+version定义需要绑定的插件坐标

  2. excution下的goals对应插件的目标,例如maven-surefire-plugin:test冒号后的test为一个goal

  3. phase对应声明周期中的phase,phase非必填,因为部分插件定义了默认阶段。

  4. 另外,configuration为参数配置

原文地址:https://www.cnblogs.com/suntingme/p/10824728.html