Maven
一、课程体系
二、本阶段课程说明
三、Why Maven
1、从『依赖管理』角度解释
2、从『项目管理』角度解释
可以将一个项目分成多个模块,各个模块可以部署到不同的服务器上。如何实现各个模块直接的管理、调用,如何实现分布式部署。Maven可以搞定。
3、从『项目目录结构』角度解释
约定大于配置,配置大于编码
Maven的项目结构是统一的。统一有利于自动化的构建
四、What Maven
Maven是一款自动化构建(build)工具,专注服务于Java平台的项目构建和依赖管理。将项目开发和管理过程抽象成一个项目对象模型(POM)。开发人员只需做一些简单的配置,就可以批量完成项目的构建、报告和文档的生成工作。
Maven 是跨平台的,这意味着无论是在 Windows 上,还是在 Linux 或者 Mac 上,都可以使用同样的命令。
构建过程包含的主要的环节:
①清理:删除以前的编译结果,为重新编译做好准备。
②编译:将Java源程序编译为字节码文件。
③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
④报告:在每一次测试后以标准的格式记录和展示测试结果。
⑤打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar包,Web工程对应war包。
⑥安装:在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。
⑦部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行。
五、核心概念
Maven之所以能够实现自动化的构建,和它的设计是紧密相关的。我们对Maven的学习围绕它的九个核心概念展开。
① 仓库管理
② POM
③ 约定的目录结构
④ 坐标
⑤ 依赖管理
⑥ 生命周期
⑦ 插件和目标
⑧ 继承
⑨ 聚合
通过六个案例来完成对这九个核心概念的讲解
① 手动创建Java项目
② IDEA中创建Java项目
③ 创建Web项目
④ 依赖管理
⑤ 继承
⑥ 聚合
六、Maven的仓库
仓库的英文单词是repository: [rɪˈpɒzɪt(ə)ri]。
1、仓库中放什么
放构件(artifact)
[1]第三方框架或工具的jar包
[2]Maven的插件plugin
[3]我们自己开发的项目的模块
2、仓库分类
3、仓库的访问步骤
七、安装Maven
1、检查JAVA_HOME配置是否正确
要安装Maven,必须先正确安装JDK
C:\Users\Administrator>java -version java version “1.8.0_161” Java(TM) SE Runtime Environment (build 1.8.0_161-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode) C:\Users\Administrator>echo %JAVA_HOME% C:\Java\jdk1.8.0_161 C:\Users\Administrator>echo %PATH% C:\Java\jdk1.8.0_161\bin;C:\Program Files\MySQL\MySQL Server 5.7\bin;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps; |
---|
2、下载Maven安装包
官方下载地址 :https://maven.apache.org/download.cgi
历史版本
3、解压安装
注意:安装路径不要有中文、空格等特殊字符
bin:mvn(maven) mvn的执行文件
conf:settings.xml Maven的配置文件
4、配置环境变量
Java:JAVA_HOME PATH
Tomcat:CATALINA_HOME PATH
Maven : M2_HOME(低版本MAVEN_HOME) Maven主目录 PATH 可执行文件的路径bin
5、验证安装是否正确
C:\Users\Administrator>mvn -v Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven home: C:\Java\apache-maven-3.6.3\bin\.. Java version: 1.8.0_161, vendor: Oracle Corporation, runtime: C:\Java\jdk1.8.0_161\jre Default locale: zh_CN, platform encoding: GBK OS name: “windows 10”, version: “10.0”, arch: “amd64”, family: “windows” C:\Users\Administrator>mvn -version Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven home: C:\Java\apache-maven-3.6.3\bin\.. Java version: 1.8.0_161, vendor: Oracle Corporation, runtime: C:\Java\jdk1.8.0_161\jre Default locale: zh_CN, platform encoding: GBK OS name: “windows 10”, version: “10.0”, arch: “amd64”, family: “windows” |
---|
6、指定本地仓库(可选)
本地仓库必须有,但是有默认位置:用户家目录/.m2/repository。
conf/settings.xml可以指定额外的位置
7、配置阿里云提供的镜像仓库(可选)
默认访问的远程库是官方中央仓库,但是速度慢。为了提高速度,可以指定镜像仓库
8、配置Maven工程的基础JDK版本(可选)
该配置对当前服务器的所有的Maven工程有效,这是一个全局配置。
此处不配置,默认JDK编译版本是JDK5,但是可以在每个工程进行单独配置,局部的配置
八、Maven的目录结构
0
² src/main/java:存放项目的java类源文件,即:Xxx.java
² src/main/resources:存放项目的资源文件,如.xml、.properties
² src/test/java:存放项目的用于测试的java类源文件,即:XxxTest.java
² src/test/resources:存放项目的测试相关的资源文件,如.xml、.properties
² pom.xml:Maven项目的配置文件,是学习Maven的重点
² target:编译之后的结果,比如class、资源文件
九、手动创建Java项目
1、创建约定目录结构
2、创建Maven的核心配置文件pom.xml
<?xml version=”1.0” ?> xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”> |
---|
3、编写主代码
注意:在src/java下创建目录结构 com/atguigu/maven
package com.atguigu.maven; public class HelloMaven { public String sayHello(String name){ return “Hello “+name+”!”; } } |
---|
4、编写测试代码
要在test的java下创建包结构:com/atguigu/test,和前面的HelloMaven不在一个包下
package com.atguigu.test; import org.junit.Test; import com.atguigu.maven.HelloMaven; public class TestHelloMaven { @Test public void testHello(){ HelloMaven hello = new HelloMaven(); String results = hello.sayHello(“lucky”); System.out.println(results); } } |
---|
5.使用Maven命令构建项目
打开cmd,进入当前项目的根目录(也就是pom.xml所在的目录)
命令 | 作用 |
---|---|
mvn compile | 只编译主代码,放入target目录 |
mvn clean | 删除target目录 |
mvn test-compile | 编译主代码和测试代码,放入target目录(resouces也会拷入target目录) |
mvn test | 编译主代码和测试代码,放入target目录(resouces也会拷入target目录),并且运行测试用例 |
mvn package | 编译主代码和测试代码,放入target目录(resouces也会拷入target目录),并且运行测试用例,将当前项目打包成一个jar |
mvn install | 完成mvn package的所有功能,并且将当前jar上传到本地库(其他项目也可以使用) |
mvn deploy | 在install基础上,将当前的jar上传到远程库(需要更多的条件) |
Compile、test-compile、test、package、install、deploy各个操作是Maven生命周期的各个阶段,当执行后面一个阶段 时候,都会从第一个阶段开始,依次执行各个阶段。
Clean属于另外一个单独的生命周期。但是可以 mvn clean install
十、Idea中创建Java项目
1、在IDEA中集成Maven
2、在IDEA中创建Maven Java工程
先创建一个Java项目,在其中可以创建多个模块,使用Maven项目结构。
3、进行简单代码开发
① pom.xml中添加JUnit、lombok依赖
② 创建类User并使用lombok注解
③ 创建XML资源文件
④ 创建测试类TestUser
⑤ 测试
如何希望在进行package、install等操作时跳过test,不运行测试用例,点击该按钮。
4、Lombok
以前的Java项目中,充斥着太多不友好的代码:POJO的getter/setter/toString;异常处理;I/O流的关闭操作等等,这些样板代码既没有技术含量,又影响着代码的美观,Lombok应运而生。
Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。
最近IDEA 2020最后一个版本发布了,已经内置了Lombok插件,SpringBoot 2.1.x之后的版本也在Starter中内置了Lombok依赖。
十一、POM
POM( Project Object Model,项目对象模型) 是Maven项目的基本工作单元,是一个XML文件,位于项目根目录,包含了项目基本信息,用于描述项目如何构建,声明项目依赖等。
Maven工程的核心配置。可以说学习Maven就是学习pom.xml文件中的配置。POM 中可以指定以下配置:
² POM模型版本:modelVersion
² 项目坐标:groupId、artifactId、version、packaging
² 父模块和子模块:parent和modules
² 项目依赖:dependencies
² 项目构建:build
² 属性和属性文件:properties和profiles
十二、坐标
Maven的坐标元素包括groupId、artifactId、version、packaging、classfier等,
其中groupId、artifactId、version是必须定义的,即可唯一的标记一个坐标,称为坐标三要素,简称GAV。
[1]groupId:公司或组织的域名倒序+当前项目名称
[2]artifactId:当前项目的模块名称
[3]version:当前模块的版本
坐标和仓库中jar包的存储路径之间的对应关系
1]将gav三个向量连起来
com.atguigu.maven+Hello+0.0.1-SNAPSHOT
[2]以连起来的字符串作为目录结构到仓库中查找。jar的名称是artifactId-version.jar
com/atguigu/maven/Hello/0.0.1-SNAPSHOT/Hello-0.0.1-SNAPSHOT.jar