maven
第一节 为什么要学习Maven?
1、从『构建』角度解释
①个人开发流程
②团队开发流程
引申:更大范围内的团队协作
# 2、从『依赖』角度解释
# ①jar包的规模
随着我们使用越来越多的框架,或者框架封装程度越来越高,项目中使用的jar包也越来越多。项目中,一个模块里面用到上百个jar包是非常正常的。
# ②jar包的来源
-
这个jar包所属技术的官网。官网通常是英文界面,网站的结构又不尽相同,甚至找到下载链接还发现需要通过特殊的工具下载。
-
第三方网站提供下载。问题是不规范,在使用过程中会出现各种问题。
- jar包的名称
- jar包的版本
- jar包内的具体细节
# ③jar包之间的依赖关系
框架中使用的jar包,不仅数量庞大,而且彼此之间存在错综复杂的依赖关系。依赖关系的复杂程度,已经上升到了完全不能靠人力手动解决的程度。另外,jar包之间有可能产生冲突。进一步增加了我们在jar包使用过程中的难度。
到目前为止,我们熟悉的jar包之间依赖关系有下面这些例子:
- junit-4.12依赖hamcrest-core-1.3
- thymeleaf-3.0.12.RELEASE依赖ognl-3.1.26
- ognl-3.1.26依赖javassist-3.20.0-GA
- thymeleaf-3.0.12.RELEASE依赖attoparser-2.0.5.RELEASE
- thymeleaf-3.0.12.RELEASE依赖unbescape-1.1.6.RELEASE
- thymeleaf-3.0.12.RELEASE依赖slf4j-api-1.7.26
而实际上jar包之间的依赖关系是普遍存在的,如果要由程序员手动梳理无疑会增加极高的学习成本,而这些工作又对实现业务功能毫无帮助。
第一章-Maven相关的概念
知识点-Maven介绍
1.目标
-
能够了解Maven的作用
2.路径
-
什么是Maven
-
Maven的作用
-
Maven的好处
3.讲解
3.1什么是Maven
Maven是项目进行模型抽象,充分运用的面向对象的思想,Maven可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。
说白了: Maven是由Apache开发的一个工具。用来管理java项目(依赖(jar)管理, 项目构建, 分模块开发 ,管理项目的生命周期).
3.2Maven的作用
-
依赖管理: maven对项目的第三方构件(jar包)进行统一管理。向工程中加入jar包不要手工从其它地方拷贝,通过maven定义jar包的坐标,自动从maven仓库中去下载到工程中。
-
项目构建: maven提供一套对项目生命周期管理的标准,开发人员、和测试人员统一使用maven进行项目构建。项目生命周期管理:编译、测试、打包、部署、运行。
-
maven对工程分模块构建,提高开发效率。 (后面Maven高级会涉及)
3.3 Maven的好处
-
使用普通方式构建项目
使用Maven构建项目
4.小结
-
Maven是Apache开发的一个项目管理工具. 用来管理java项目的
-
Maven的作用
-
使用maven创建项目
-
管理项目生命周期
-
引入依赖(jar包)
-
分模块构建项目(后面学)
第二节 什么是Maven?
Maven是Apache软件基金会组织维护的一款专门为Java项目提供构建和依赖管理支持的工具。
# 1、构建
Java项目开发过程中,构建指的是使用『原材料生产产品』的过程。
-
原材料
-
Java源代码
-
基于HTML的Thymeleaf文件
-
图片
-
配置文件
-
# ……
-
-
产品
- 一个可以在服务器上运行的项目
构建过程包含的主要的环节:
- 清理:删除上一次构建的结果,为下一次构建做好准备
- 编译:Java源程序编译成*.class字节码文件
- 测试:运行提前准备好的测试程序
- 报告:针对刚才测试的结果生成一个全面的信息
- 打包
- Java工程:jar包
- Web工程:war包
- 安装:把一个Maven工程经过打包操作生成的 jar 包或 war 包安装到Maven仓库
- 部署:将准备好的jar包或war包部署到服务器上运行
# 2、依赖
如果A工程里面用到了B工程的类、接口、配置文件等等这样的资源,那么我们就可以说A依赖B。例如:
- junit-4.12依赖hamcrest-core-1.3
- thymeleaf-3.0.12.RELEASE依赖ognl-3.1.26
- ognl-3.1.26依赖javassist-3.20.0-GA
- thymeleaf-3.0.12.RELEASE依赖attoparser-2.0.5.RELEASE
- thymeleaf-3.0.12.RELEASE依赖unbescape-1.1.6.RELEASE
- thymeleaf-3.0.12.RELEASE依赖slf4j-api-1.7.26
依赖管理中要解决的具体问题:
- jar包的下载:使用Maven之后,jar包会从规范的远程仓库下载到本地
- jar包之间的依赖:通过依赖的传递性自动完成
- jar包之间的冲突:通过对依赖的配置进行调整,让某些jar包不会被导入
# 3、Maven的工作机制
第一节 Maven核心程序解压与配置
# 1、解压Maven核心程序
核心程序压缩包:apache-maven-3.5.4-bin.zip,解压到非中文、没有空格的目录。例如:
在解压目录中,我们需要着重关注Maven的核心配置文件:conf/settings.xml
# 2、指定本地仓库
本地仓库默认值:用户家目录/.m2/repository。由于本地仓库的默认位置是在用户的家目录下,而家目录往往是在C盘,也就是系统盘。将来Maven仓库中jar包越来越多,仓库体积越来越大,可能会拖慢C盘运行速度,影响系统性能。所以建议将Maven的本地仓库放在其他盘符下。配置方式如下:
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>D:\maven-rep1026</localRepository>
本地仓库这个目录,我们手动创建一个空的目录即可。
记住:一定要把localRepository标签从注释中拿出来。
注意:本地仓库本身也需要使用一个非中文、没有空格的目录。
# 3、配置阿里云提供的镜像仓库
Maven下载jar包默认访问境外的中央仓库,速度很慢。改成阿里云提供的镜像仓库,访问国内网站,可以让Maven下载jar包的时候速度更快。配置的方式是:将下面mirror标签整体复制到mirrors标签的内部。
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
# 4、配置Maven工程的基础JDK版本
如果按照默认配置运行,Java工程使用的JDK版本是1.5。配置的方式是:将profile标签整个复制到profiles标签内。
<profiles>
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
4.小结
-
注意事项
-
Maven安装包
和仓库
都需要解压到一个==没有中文和空格==的目录下(建议解压到不同的目录) -
-
MAVEN_HOME 配置到Maven的解压目录
-
Path 配置到bin目录
-
-
在
apache-maven-3.3.9\conf\settings.xml
配置本地仓库
第二节 配置环境变量
# 1、检查JAVA_HOME配置是否正确
Maven是一个用Java语言开发的程序,它必须基于JDK来运行,需要通过JAVA_HOME来找到JDK的安装位置。
可以使用下面的命令验证:
C:\Users\Administrator>echo %JAVA_HOME%
D:\software\Java
C:\Users\Administrator>java -version
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)
# 2、配置MAVEN_HOME
配置环境变量的规律:
XXX_HOME指向的是bin目录的上一级
PATH指向的是bin目录
# 3、配置PATH
# 4、验证
C:\Users\Administrator>mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: D:\software\apache-maven-3.5.4\bin\..
Java version: 1.8.0_141, vendor: Oracle Corporation, runtime: D:\software\Java\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
知识点-IDEA集成Maven(很重要)
1.目标
-
能够掌握IDEA配置本地Maven
2.路径
-
在IDEA配置Maven
-
配置默认的Maven环境
3.讲解
3.1配置Maven
-
配置Maven
配置参数(解决创建慢的问题) -DarchetypeCatalog=internal
4.小结
-
配置默认Maven环境 目的: 为了下次创建的时候 不需要再选择Maven了, 使用的就是这个默认环境的
-
配置三块
-
maven_home
-
Maven的配置文件
-
本地仓库的路径
-
第三章-使用IDEA创建Maven工程
实操-创建javase工程
1.目标
-
能够使用IDEA创建javase的Maven工程
2.路径
-
创建java工程
-
java工程目录结构
-
编写Hello World!
3.讲解
3.1创建java工程
-
需要main/java文件夹变成 源码的目录(存放java源码)
-
需要test/java文件夹变成 测试源码的目录(存放单元测试)
-
创建resources目录, 变成资源的目录
-
整体结构
3.3 编写Hello World!
4.小结
-
JavaSe工程的骨架
-
项目的结构