Maven 翻译为“专家 内行”
Maven是跨平台的项目管理工具,主要服务
1.基于java平台的项目构建
项目完整的构建过程包括:清理-编译-测试-报告-打包-部署
理想的项目构建:高度自动化,跨平台,可重用的组件,标准化的
什么是依赖?为什么要进行依赖管理? 自动下载统一依赖管理
有哪些项目信息:项目名称描述,开发人员信息,开发者信息等
maven项目构建:一步构建 ,自动构建
2.依赖管理
3.项目信息管理
二.Maven的安装与配置
官网下载并解压——》配置环境变量——》cmd——》mvn -v 显示以下信息为配置成功
新建系统变量:MAVEN_OPTS 值为: -Xms128m -Xmx512m 点击确定
xms为java初始化对内存大小 xmx为java最大对内存大小
配置用户范围的settings.xml
位置是:MAVEN_HOME/conf/settings.xml 全局的 管理所有用户
~/.m2/settings.xml 单个用户的(~号称为linux的登录用户的家目录 在windows下指c:\Users\Administrator (以Admin用户身份登录))
复制 MAVEN_HOME/conf/settings.xml到c:\Users\Administrator\.m2\目录下 此时 修改这个settings.xml用来管理当前用户
Maven的默认约定如下:
src/main/java ---存放项目的.java文件
src/main/resources ---存放项目资源文件,如Spring ,hibernate配置文件
src/test/java--存放所有测试.java文件,如JUnit测试类
src/test/resources--测试资源文件
target----项目输出位置
pom.xml标识这是一个Maven项目(约定)
Maven的编译:
切换到项目目录下然后输入下面的命令(对整个项目进行编译)
mvn compile
然后在target目录下可以看到编译好的.calss文件
测试命令:mvn test (会自动生成target目录并将测试及测试之前的步骤都实现(编译----测试))
在target中生成会报告文件
打包命令:mvn clean package(清除target并实现 编译--测试——报告——打包)(这是一个组合命令“清理 打包”)
清理命令:mvn clean(target目录及target下编译出来的文件会被清理)
安装命令:mvn install (将自己打包好的jar包安装到仓库里面(仓库就是~ 位置是C:\Users\Administrator\.m2\repository))
部署命令:deploy 将最终的包安装至本地仓库并部署到私服 已让其他开发人员与项目共享
生成站点文档:site 生成项目的站点文档
Maven的核心概念:
maven坐标:(坐标是唯一的)
四部分构成(确定要使用的jar包的唯一性)
groupid:定义当前Maven项目隶属于项目
artifactid:定义实际项目中的一个模块(接近于类名)
version:定义项目的当前版本
packaging:定义该项目的打包方式(缺省值是jar 所以一般打包形式是jar包)
范围:eg: <scope>test</scope>
范围有四种:
1.complie :(缺省时就是它 )默认的编译依赖范围。对于编译、测试、运行三种classpath都有效
2.test:测试依赖范围。只对于测试classpath有效
3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效,因为容器已经提供,例如servlet-api
4.runtime:运行时提供。例如:jdbc驱动
仓库管理:
用来同意存储所有Maven共享构建的位置就是仓库
仓库布局
根据Maven坐标定义每个构建在仓库的唯一存储路径
仓库分类
本地仓库:
~/.m2/repository/
每个用户只有一个本地仓库
远程仓库:
中央仓库:Maven默认的远程仓库
http://repo1.maven.org/maven2
私服Nexus:是一种特殊的远程仓库,他是架设在局域网内的仓库
镜像:用来替代中央仓库,速度一般比中央仓库快(与中央仓库地址不同 )
生命周期:maven生命周期就是为了对所有的构建过程进行抽象和统一,
包括项目清理,初始化,编译,打包,测试,部署等几乎所有构建步骤
maven三大生命周期
clean:清理项目的
default(缺省):构建项目的
site(站点):生成项目站点的
三.maven与eclipse的整合
如何安装:zest插件安装
m2e插件安装
m2e-extras插件安装
依赖的传递性!!!!
A 依赖 B B依赖 C 则A间接依赖C A距离B距离是1 A距离C距离是2
依赖的冲突解决规则·:路径最近者优先,路径相同时第一申明者优先(先后顺序是看项目的pom.xml)
聚合和继承:
如果我们想一次构建多个项目模块,那么我们就需要对多个项目模块进行聚合
<modules><module></module></modules>
在父工程位置的pom.xml 进行编辑 eg:
在module里面是各个子项目“子模块功能”
<modules>
<module>../Hello</module>
<module>../HelloFriend</module>
<module>../web</module>
</modules>
何为继承?(消除代码冗余,建立父亲项目,建立依赖管理,在子项目再指明依赖的groupid和artifactid,消除版本号'方便管理版本号")
继承是为了消除重复,我们把很多相同的配置提取出来
例如:grouptid,version等
继承与聚合的关系:
聚合主要是为了快速构建项目
继承主要是为了消除重复
四.建立Maven私服-Nexus
五.部署