一、Maven简介与下载
1、maven是apache组织下的一款开源项目,它的作用是帮助我们去很好的管理项目
2、maven官网:http://maven.apache.org
3、maven的下载:http://maven.apache.org/download.cgi
4、maven目录结构介绍
二、Maven的安装与配置
1、配置MAVEN_HOME
2、配置path
3、查看Maven是否配置成功
如果不配置Maven的环境变量将不能在DOS下执行相关操作
三、Eclipse配置Maven
1、Eclipse:Window >> Preferences >> Maven >> Installations
2、Eclipse:Window >> Preferences >> Maven >> User Setting【必须先配置Maven本地仓库】
图片演示的地址跟说明的地址不一样,只要指向你自己本地仓库中的setting.xml就可以,至此Eclipse的Maven配置已完成
4、创建Maven项目
有俩种方式
(1) Eclipse:New > Other 搜索Maven > Maven Project > 勾选 Creat a simple project > Next
输入groupId和artifactId >> Finish
(2)Maven项目结构介绍
5、Eclipse运行Maven项目,选择项目或项目下的pom.xml文件 >> 右键 >> Run As >> Maven build >> 输入要执行的Maven命令
6、Maven项目发布到私服
(1)设置镜像,在本地仓库setting.xml中,找到mirrors,添加私服仓库的镜像
(2)设置server,在setting.xml中,找到servers,进行如下配置
(3)设置pom.xm
(4)对项目执行clean deploy命令【你的私服仓库必须配置正确才能成功发布到私服仓库】
四、Maven命令
mvn -clean:运行清理操作,会默认清掉target目录
mvn -clean compile:先运行清理再进行编译,会将代码编译到target文件夹中
mvn -clean test:运行清理和测试
mvn -clean package:运行清理和打包
mvn -clean install:运行清理和安装,会将打好的包安装到本地仓库中
mvn -clean deploy:运行清理和发布,会发布到私服
mvn -compile:编译
五、Maven坐标
Maven坐标元素包括:groupId、artifactId、version、packaging、classifier
groupId:定义当前Maven项目隶属的实际项目的名称,
arifactId:该元素定义实际项目中的一个Maven项目,推荐命名格式:“实际项目名-模块名”
version:定义项目当前的版本
packaging:定义项目打包的方式。jar、war、pom
classifier:定义构建输出的一些附属构建,比如项目的文档附件
所有的依赖都是通过坐标(GVA)来进行存储,GVA是groupId、version、artifactId的缩写
六、nexus搭建Maven私服仓库(Windows系统)
1、在你服务器上安装配置好Maven,安装配置见上面第二点
2、安装Nexus
(1)Nexus下载:http://www.sonatype.org/nexus/go
(2)Nexus环境变量配置:
变量值指向nexus解压目录下的bin目录
(3)Nexus安装
修改端口号:在nexus安装目录conf下打开nexus.properties文件,修改application-port属性值即可
以管理员身份打开命令窗口,输入nexus install,然后输入nexus start
出现nexus started表示安装成功
(4)Nexus登录
Nexus访问地址:localhost:8081/nexus
管理员帐号登录:admin/admin123
(5)Nexus仓库介绍
1)Hosted仓库,内部项目的发布仓库
Releases:是内部模块中release模块的发布仓库
Snapshots:发布内部SNAPSHOTS模块的仓库
3rd party:第三方依赖仓库,这个数据通常是由内部人员自行下载之后发布的
2)proxy仓库,从远程中央仓库中寻找数据仓库
3)group仓库,组仓库,用来方便开发人员设置的仓库
(6)创建私服仓库
先登录进Nexus
(1)点击左侧Repositories,然后添加一个本地仓库Hosted Repository
(2)设置仓库
七、Maven依赖
1、 依赖就是指该项目所需要依赖的一些jar包
2、怎么添加依赖 ?
3、依赖的类型
依赖的类型有<packaging>来定,<packaging>的默认值是jar,另还有war、pom类型
4、依赖的范围
(1)compile范围指在编译范围有效、在编译和打包时都会将依赖存储进去(默认)
(2)test范围是指的是测试范围有效,在编译和打包时都不会使用这个依赖
(3)provided范围是指在编译和测试的过程有效,最后生成war包时不会加入,例如:servlet的API,因为servlet-api,
tomcat等web服务器已经存在了,如果再打包会冲突
(4)runtime范围是指运行时依赖,编译时依赖
(5)import导入依赖范围
(6)system系统依赖范围
compile >> test >> package >> install
5、依赖传递性
(1)如果A依赖于B,B依赖于C,那么A就依赖C,这就是传递性依赖
(2)如果A依赖于C1.0,B也依赖于C1.1,而D依赖于A和B,那么如果A写在前面就会调用C1.0,如果是B写在前面就会调用C1.1
6、可选依赖
比如以下情况:
B是一个持久层隔离工具包,它支持多种数据库,包括mysql,oracle等,在构建这个工具包的时候,需要这俩种数据库的驱动程序,但只会依赖一种数据库,
这时就可用可选依赖
7、排除依赖
基于依赖的传递性,子类中如果不想引入传递性的某个依赖A,而是自己直接显示的声明对A的依赖,可使用<exclusion>进行排除依赖
8、依赖的聚合
聚合的项目和其他项目在同一级模块中需要使用 . ./ 项目名
八、Maven仓库
1、创建本地仓库
1)在D盘创建一个目录作为Maven的本地仓库,如d:/maven-store/repository
2) 将maven安装目录config下的setting.xml复制到d:/maven-store目录下
3)打开本地仓库中的setting.xml增加以下内容
2、修改远程仓库
dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)
dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。