目录
(上午)
(下午)
什么是Maven:
译为“专家”、"内行“,是Apache基金会下的一个纯Java开发的开源项目。基于项目对象模型(缩写:POM)概念,主要用于基于Java开发的项目创建,依赖管理和项目信息管理。
Maven的优缺点:
优点:
- 对第三方依赖库进行统一的版本管理
- 统一项目的目录结构
- 统一软件构建阶段
- 便于项目升级,无论是项目本身升级还是项目使用的依赖升级。
- 有助于多模块项目的开发,一个模块开发好后,发布到仓库,依赖该模块时可以直接从仓库更新,而不用自己去编译。
- maven有很多插件,便于功能扩展,比如生产站点,自动发布版本等
- 自动生成项目网站和报表
缺点:
- maven是一个庞大的构建系统,学习难度大
- maven采用约定优于配置的策略(convention over configuration),虽然上手容易,但是一旦出了问题,难于调试。
- 当依赖很多时,m2eclipse 老是搞得Eclipse很卡。
- 中国的网络环境差,很多repository无法访问,比如google code, jboss 仓库无法访问等。
Maven生命周期:
1.clean周期:
(清理)主要用于清理上一次构建产生的文件,可以理解为删除target目录
2.默认周期:
真正进行项目编译导报等工作阶段
- validate:验证项目是否正确
- compile:编译,编译项目的源代码*****
- test:测试,junit这些测试不应该要求代码被打包或部署
- package:进行打包。
- java工程------------.jar
- javaweb工程------.war
- verify:验证,对集成测试结果执行检察
- install:安装****
- 所有的项目都可以编程jar包*(依赖)
- deploy:部署,及那个最终的包赋值到远程储存库,和其他开发人员共享(maven私服)
3.site周期:(站点)
- site产生项目的站点文档
- site-deploy将项目的站点文档部署到服务器
Maven坐标
- GroupId:团体组织标识符,它一般情况下以创建这个组织的名称的逆向域名开头。
- ArtifactId:项目名。单独项目的唯一标识符。
- Version:版本
通过这三个向量来定位Maven仓库中其jar包所在的位置,把对应的jar包引入到工程中
Maven常见的依赖范围
- compile:默认。编译范围,编译,测试,运行都有效。参与打包,安装。
- test:测试范围,只有在test范围下才能用,不参与打包,安装。
- provided:编译和测试,不参与打包,安装。
- runtime:运行,只参与运行。
- system:废弃。系统。
- import:废弃。引入。
依赖的传递:
比如所demo01的项目中引入了mysql,servlet,fastjson,codec依赖,那我把demo01install到了我的本地仓库,或者是maven私服,如果其他成员通过GAV引入了我的demo01,demo01中的mysql,servlet,fastjson,codec会一起引入进来
下载
1.进入官网点击👉Maven官网👈下载文件
安装/解压
下载解压之后:把文件夹放到没有中文的路径下:我直接放到了c盘下,例如:C:\Maven\
- bin:存放了 maven 的命令
- boot:存放了一些 maven 本身的引导程序,如类加载器等
- conf:存放了 maven 的一些配置文件,如 setting.xml 文件****这个xml文件是核心
- lib:存放了 maven 本身运行所需的一些 jar 包
配置环境变量
右键属性
新建一个变量:
变量名:MAVEN_HOME
变量值:Maven存放的路径(bin目录上一级)例如:C:\apache-maven-3.8.6-bin\apache-maven-3.8.6(这是我的路径)
把MAVEN_HOME添加到Path系统变量中:%MAVEN_HOME%\bin
测试
打开cmd输入:mvn -v
出现以下内容证明安装成功
Maven仓库
Maven中的仓库是用来存放maven构建的项目和各种依赖的(Jar包)。
Maven的仓库分类:
- 本地仓库: 位于自己计算机中的仓库, 用来存储从远程仓库或中央仓库下载的插件和 jar 包,
- 远程仓库: 需要联网才可以使用的仓库,阿里提供了一个免费的maven 远程仓库。
- 中央仓库: 在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中 央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包 含了世界上大部分流行的开源项目构件
配置本地仓库
在maven安装目录中,进入 conf文件夹, 可以看到一个settings.xml 文件,我们在这里配置
配置阿里云的远程仓库
原来的库是连接外国的库,连不上,所以要改成咱们阿里云的镜像仓库
代码:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
idea创建Maven项目
接下来就可以去idea创建一个maven的项目了
首先一定要选中Maven,创建一个Maven的项目
打开IDEA 选择File --> Settings --> 搜素maven,就会看到如下界面,并修改路径
之后工程就是这个样子,如果不是,请重新开启idea
maven导入依赖:在pom.xml文件里,例如导入mysql\junit\servlet等包
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
点击刷新,他就会自动在阿里云镜像仓库里下载下来存到本地的仓库中
总结
今天学的Maven是新的架构知识,作用就是通过它连接jar包,调用起来更方便、效率更高