一、目前掌握的技术
二、目前的技术在开发中存在的问题
1、一个项目就是一个工程
如果项目非常庞大,就不适合继续使用 package 来划分模块,
最好是每一个模块对应一个工程,利于分工协作。
借助于 Maven 就可以将一个项目拆分成多个工程。
2、项目中的需要的 jar 包必须手工 复制、粘贴 到 WEB-INF/lib 目录下。
带来的问题是:同样的 jar 包文件重复出现在不同的项目工程中,
一方面浪费存储空间,另一方面也让工程比较臃肿。
借助 Maven,可以 将 jar 包仅仅保存在 “仓库”中,有需要使用工程
引用这个文件接口,并不需要真的把 jar 包复制过来。
类似于 java 中栈空间的多个引用指向同一个堆空间里的内容,这样就可以
节约内存。
3、jar 包到官网下载,不同技术的官网提供 jar 包下载的形式五花八门。
有些技术官网就是通过 Maven 或 SVN 等专门的工具来提供下载。
如果是以不规范的方式下载的 jar 包,那么其中的内容很可能也是不规范的。
借助于 Maven 可以以一种规范的方式下载 jar 包,因为所有知名框架或第三方工具的 jar 包以及按照统一的规范存在了 Maven 的中央仓库中。
以规范的方式下载的 jar 包,内容也是可靠的。
Tips: “统一的规范” 不仅对 IT 开发领域非常重要,对人类社会也是非常重要。
4、一个 jar 包依赖的其他 jar包需要手动加入到项目。
如果所有 jar 包之间的依赖关系都需要程序员自己非常清楚的了解,
那么会极大的增加学习成本。
Maven 会自动将依赖的 jar 包导入进来。
三、Maven 是什么?
1、Maven 是一款服务于 java 平台的自动化构建工具。
Make --> Ant --> Maven --> Gradle(缺少熟练操作者)
2、构建
A、概念:构建就是以我们编写的 Java 代码、框架配置文件、国际化等其他资源文件、JSP 页
面和图片等静态资源作为“原材料”,去“生产”出一个可以运行的项目的过程。
编译
部署
搭建
B、编译:java 源文件 [User.java ] --> 编译成 —> Class字节码文件 [User.class ]
--> JVM去执行
C、部署:一个 BS 项目最终运行的并不是动态 Web 工程本身,而是这个动态 Web
工程 “编译的结果”。
动态 Web 工程 —> 编译、部署 —> 编译结果
能够看成编译结果中是没有 WebContent 路径的,这也是为什么我们在写路径时不会写到它。即开发过程中,所有的 路径 或配置文件中配置的 类路径 等都是以 编译结果 为标准的。
Tips:运行时环境:
其实是一组 jar 包的引用,并没有把 jar 包本身复制到工程中,所以并不是目录。
Tips: tc_server
整个目录复制到 eclipse 解压安装目录下的 dropins 目录下即可。
eclipse 自动编译:
自动部署。
3、构建过程的几个主要环节
① 清理 清理:删除以前的编译结果,为重新编译做好准备。
② 编译 编译:将 Java 源程序编译为字节码文件。
③ 测试 测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
④ 报告 报告:在每一次测试后以标准的格式记录和展示测试结果。
⑤ 打包 打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web 工程对应 war 包。
⑥ 安装 安装:在 Maven 环境下特指将打包的结果——jar 包或 war 包安装到本地仓库中。
⑦ 部署 部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行。
.4 自动化构建。
四、安装 Maven 核心程序
① 检查JAVA_HOME环境变量
② 解压Maven的核心程序
将apache-maven-3.5.0-bin.zip解压到一个非中文无空格的目录下。例如:D:\Maven\apache-maven-3.5.0
③ 配置环境变量
M2_HOME D:\Maven\apache-maven-3.5.0
path D:\Maven\apache-maven-3.5.0\bin
④ 查看Maven版本信息验证安装是否正确
C:\Windows\System32>mvn -v
五、Maven 核心概念
Maven 能够实现自动化构建是和它的内部原理分不开的,这里我们从 Maven 的九个核心概念入手,
看看 Maven 是如何实现自动化构建的
① POM
② 约定的目录结构
③ 坐标
④ 依赖管理
⑤ 仓库管理
⑥ 生命周期
⑦ 插件和目标
⑧ 继承
⑨聚合
六、第一个Maven工程
① 目录结构
Hello
|---src 源码
|---|---main 存放主程序
|---|---|---java 存放 java 源文件
|---|---|---resources 存放框架或其他工具的配置文件
|---|---test 存放测试程序
|---|---|---java
|---|---|---resources
|---pom.xml Maven 工程的核心配置文件
② 为什么要遵守约定的目录结构呢?
Maven 要负责我们这个项目的自动化构建,以编程为例,Maven 要想自动进行编译,那么它必须知道 Java 源文件保存在哪里。
自定义的东西要想让框架或者工具知道,有两种方法
a、以配置的方式明确告诉框架
<param-value>classpath: spring-context.xml</param-value>
b、遵守框架内部已存在的约定
log4j.properties
log4j.xml
七、常用的 Maven 命令
①注意:执行与构建过程相关的 Maven 命令,必须进入 pom.xml 所在的目录。
② 常用命令:
[1] mvn clean: 清理
[2] mvn compile: 编译主程序
[3] mvn test-compile: 编译测试程序
[4] mvn test: 执行测试
[5] mvn package: 打包
[6] mvn install:安装
[7] mvn site: 生成站点
八 、关于互联网问题
① Maven 的 核心程序中仅仅定义了抽象的生命周期,
而具体的操作则是由 Maven 的插件 插件来完成的。
可是 Maven 的插件并不包含在 Maven 的核心程序中,在首次使用时需要联网下载。
② 当我们执行的 Maven 命令需要用到某些插件时, Maven 核心程序会首先到本地仓库中去找。
③ 本地仓库的默认位置:[系统中当前用户的家目录]\.m2\repository
C:\Users\[登录当前系统的用户名]\.m2\repository
④ Maven 核心程序如果在本地仓库中找不到需要的插件,那么它会自动连接外网,
到中央仓库下载。
⑤ 如果此时无法连接外网,则构建失败。
⑥ 修改默认本地仓库的位置可以让 Maven 核心程序到我们事先准备好的目录下查找插件。
a、找到 Maven 解压目录 \conf\settings.xml
b、在settings.xml 文件中找到 ocalRepository 标签
c、将 <localRepository>/path/to/local/repo</localRepository> 从注释中取出
d、将标签体内容修改为已经准备好的 Maven 仓库目录。
<localRepository>D:\Maven\RepMaven</localRepository>
九、POM
① 含义:Project Object Model 项目对象模型
DOM Document Object Model 文档对象模型
② pom.xml 对于 Maven 工程是核心配置文件,与构建过程相关的一起设置都
在这个文件中进行配置。重要程度相当于 web.xml 对于动态 Web 工程。
十、坐标
① 几何中的坐标
[1]在一个平面中使用 x、y 两个向量可以唯一的确定平面中的一个点。
[2]在空间中使用 x、y、z 三个向量可以唯一的确定空间中的一个点。
② Maven 的坐标
使用如下三个向量在 Maven 的仓库中唯一的确定一个 Maven 工程。
[1]groupid:公司或组织的域名倒序+当前项目名称
[2]artifactId:当前项目的模块名称
[3]version:当前模块的版本
<groupId>com.y.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
③ 如何通过坐标到仓库中查找 jar 包?
[1]将 gav 三个向量连起来
groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.0.0.RELEASE</version>
[2]以连起来的字符串作为目录结构到仓库中查找
org.springframework/spring-core/4.0.0.RELEASE/spring-core-4.0.0.RELEASE.jar
※注意:我们自己的 Maven 工程必须执行安装操作才会进入仓库。安装的命令是:mvn install