Maven核心概念
2016-08-16 14:45
204 查看
Maven核心概念
约定优先于配置
标准的目录结构
*.java放在src/main/java目录下*.class在target目录下
配置及静态文件
PS:通过标准的目录结构,只需要将对应文件放置在指定位置,Maven就能自动进行管理了。
项目描述符,pom.xml
POM(Project Object Model)项目对象模型
xml文件
artifact可以认为为一个项目
packaging是项目类型有pom,jar,war
pom用于项目继承和多模块项目
jar用于java项目
war用于javaweb项目
坐标(groupId,artifactId,version),唯一标识一个项目
属性,${property}引用,相当于常量,可以去除重复
依赖,dependencies,可以依赖其他项目
构建配置,build,配置插件等
多项目、继承
项目总体信息
POM继承
概念类比JAVA的继承或者覆盖(Override)
可继承项
坐标属性,如groupId
依赖配置,
插件配置
一般性信息,如开发者信息,项目协议
Root类,Super POM
所有的Maven项目都是直接或者间接的从Super POM继承下来的(如果没有指明父POM,则默认是继承Super POM)
是Maven的组成部分
Super POM定义了一组被所有项目共享的默认设置
默认的文件位置统一的插件配置
默认的中央仓库配置
继承配置
使用parent元素POM框架模型图
多模块构建
parent项目,类型是pom
定义modules
子模块(项目)中配置parent,继承父POM
配置多项目既会使用继承也会使用组合
dependencies,developers,contributors,plugin列表,resources是组合形式的
依赖配置
示意图
依赖坐标,(groupId,artifactId,version)
scope(范围)配置
compile(默认),编译时需要,打包也会放进去
provided,编译时需要,打包时不需要
用于继承的pom配置
dependencyManagement(依赖管理)
仓库
用于统一存储所有Maven项目共享的构建的空间
仓库分类
本地仓库(优先)
PS:Maven本地仓库默认路径为:${user.home}/.m2/repositorySwitchdeMacBook-Pro:maven-restaurant switch$ ls ~/.m2/repository/
antlr commons-collections jtidy velocity
asm commons-io junit xerces
backport-util-concurrent commons-lang log4j xml-apis
classworlds commons-logging net xmlpull
com dom4j org xpp3
commons-cli javax oro
commons-codec jdom plexus
SwitchdeMacBook-Pro:maven-restaurant switch$
远程仓库
本地仓库查找优先提供Maven项目访问并下载构件至本地仓库
目录结构:/<groupId>/<artifactId>/<version>/<artifactId>-<version>.<packaginh>
分类
中央仓库(Maven自带)
其他公共仓库(比如阿里云的Maven仓库)
私服(内部搭建的)
配置
使用配置文件setting.xml(对于所有项目,指定仓库)
在pom.xml为依赖指定repositories(对某一些项目指定仓库)
构件生命周期
一个构建生命周期是一组精心组织的有序的阶段
每个阶段执行预先定义的动作
编译
打包
部署等
这些动作会根据项目的类型进行选择
三套独立的生命周期
clean(删除构建输出的东西,jar包,class文件之类的)
pre-clean(清除之前的预处理工作)—>clean(移除上次构建生成的文件)->post-clean(执行一些需要在clean之后完成的工作)default
…->process-resources->compile->…->test->package->install->deployvalidate(验证项目完整性)
process-resources(将资源文件复制到目标目录下,打包需要)
compile(编译用户源代码)
test(单元测试)
package(打包,java项目打成jar包,web项目打成war包)
install(将包安装到本地仓库)
deploy(将包上传到远程仓库,其他开发人员可以通过远程仓库使用上传的包)
site(生成站点文档,开源项目使用较多)
pre-site->site->post-site->site-deployMaven架构(插件和目标)
插件(Plugin)式架构,小引擎+大量插件
所有的插件本身也是一个Maven构件,由Maven仓库管理
每一个插件提供多个目标(Goal)
调用目标的格式
mvn <Plugin>:<Goal>
构建生命周期与插件目标的关系
生命周期阶段与目标绑定
用户通过指定生命周期阶段就能够隐式的通过插件执行任务
mvn compile <——>mvn compiler:compile
对于package阶段,会根据项目类型不同,绑定到不同的目标(其他的阶段绑定都是固定的)
插件配置
示意图
插件配置元素
groupId
artifactId
configuration配置项
查看插件提供的配置项:mvn help:describe -Dplugin=<plugin_name> -Dgoal=<goal> -Ddetail=true
例如:mvn help:describe -Dplugin=compiler -Dgoal=compile -Ddetail=true对于继承的父pom
pluginManagement(插件管理)——参考dependencyManagementplugins
mvn内建插件help插件
mvn help:help -Ddetail=true(查看help插件的帮助文档)
tomcat7插件
exec插件(执行jar包)
自定义插件
Maven整体框架图
Maven使用整体流程
-------------参考《网易云课堂.Java Web开发入门》
相关文章推荐
- Maven核心概念(1)--坐标
- Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
- Maven入门-2.Maven一些核心概念介绍
- maven核心概念4
- Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
- Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
- Maven入门-2.Maven一些核心概念介绍
- Maven学习总结(17)——Maven常用的几个核心概念
- Maven-核心概念2
- maven的核心概念
- Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
- Maven核心概念之依赖,聚合与继承
- 理解maven的核心概念
- Maven核心概念
- maven 核心概念
- 理解maven的核心概念
- Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
- Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
- Apache Maven 的核心概念