一、大致介绍
1.maven介绍及环境搭建
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
下载maven须在apache.org下载,并配置环境变量。或者在安装eclispe会自带maven的插件。
2. maven的目录结构
src
-main
-java
-package
-test
-java
-package
resource
二、基础知识
1.maven常见命令
maven -v 查看maven版本
complie 编译
test 测试
package 打包
clean 删除
install 安装jar包到本地仓库
2.archetype插件用于创建符合maven规定的目录骨架
(1)mvn archetype:generate 按照提示进行选择
(2)mvn archetype:generate -DgroupId=组织名,公司网址的反写+项目名
-DartifactId=项目名-模块名
-Dversion=版本号
-Dpackge=项目包
3.maven中的坐标和仓库
坐标
构件
仓库
本地仓库和远程仓库
(1)镜像仓库:
一旦配置了镜像,原仓库将不能被访问。因为远程仓库在国外,有可能不稳定,镜像仓库在国内较为稳定
在setting.xml中找到<mirror></mirror>标签
修改:
<mirror>
<id>maven.net.cn</id>
<mirrorOf>central</mirrorOf>
<name>central mirror in china</name>
<url>http://maven.net.cn/content/groups/public</url>
<mirror>
(2)修改本地仓库默认位置
找到setting中的<localRepository></localRepository>标签,修改其中的个路径;
将setting.xml复制到修改的新位置
4.maven生命周期
clean清理项目:pre-clean 执行清理前的工作,clean情理上一次构建生成的所有文件,post-clearn执行清理后的文件
default构建项目(最核心):
compile,test,package,install
site生成项目站点:
pre-site在生成项目站点前完成的工作,site生成项目的站点文档,post-site在生成项目站点后要完成的工作,site-deploy发布生成的站点到服务器上
5.pom.xml介绍
(1)基本标签
<project></project>为根元素,包含pom的约束信息
<modelVersion></modelVersion>指定当前pom的版本,必须元素
以下的四个标签,共同包含了坐标
<groupId>反写的公司网址+项目名</groupId>,
<artifactId>项目名+模块名</artifactId>,表示实际项目中的模块
<version></version>,表示当前项目的版本号,第一个0表示大版本号,第二个0表示分支版本号,第三个0表示小版本号
snapshot快照,alpha内部测试,beta公测,Release稳定,GA正式发布
<packaging></packaging>打包的方式,不指定时自动打包为jar
(2)其余标签
<name></name>项目名,<url></url>项目地址,<description></description>项目描述等等
(3)依赖列表
依赖列表下包含许多的依赖项<dependency></dependency>
<dependencies>
<dependency>
坐标标签
<scope></scope>依赖的适用范围
<optional></optional>依赖是否可选,默认为false
<exclusion></exclustion>排除依赖传递列表
</dependency>
</dependencies>
(4)依赖管理
<dependencyManagement></dependencyManagement>主要用于定义在父类模块中,给子模块进行继承
(5)<bulid>标签中包含<plugins>插件列表,其中可包含多个<plugin>插件
(6)parent用于继承,modules用于编译的聚合
5.依赖详解
(1)依赖范围
用于控制依赖与三种classpath(编译,测试,运行)的关系。通过<scope>标签实现
compile都有效,
provided编译时和测试时有效,
runtime测试运行时有效,
test测试时有效,
system编译和测试时有效,需要与本机系统相关联,
import,导入的范围,只使用在 dependencyManagement中,表示从其他的pom中继承的依赖。
(2)依赖传递
A依赖于B,B依赖于C时,A也将自动依赖于C。使用exclusion时,可将依赖传递排除
(3)依赖冲突
原则:
a.短路优先:A->B->C->X; A->D->X;
优先走通过D的线路
b.先声明先优先:在路径长短相同时,谁先声明谁优先
(4)聚合
a.将<packaging>标签中jar改为pom
b.创建<modules>标签,添加<module>标签,向其中添加需要聚合的内容