基础知识
1.maven:用来管理项目的工具;官网:maven.apache.org;
2.没有使用maven存在的问题:
(1)项目有很多模块,模块之间有关系,手动管理困难;
(2)需要很多第三方功能,需要很多jar文件,需要手动从网络中获取;
(3)需要管理jar的版本;
(4)管理jar文件之间的依赖;
3.maven的功能:
(1)可以管理jar文件;
(2)自动下载jar和文档、源代码;
(3)管理jar的直接依赖;
(4)管理需要的jar版本号;
(5)编译程序,测试代码正确性,打包文件,形成jar包;
(6)部署项目
项目构建过程
4.构建:项目的构建,构建是面向过程的,就是一些步骤,完成项目代码的编译、测试、运行、打包、部署等
maven支持的构建:
(1)清理,把之前项目编译的东西删除掉,为新的编译代码做准备;
(2)编译,把程序源代码编译为执行代码,java.class文件,maven可以批量编译文件为java.class文件;
(3)测试,批量测试代码功能
(4)报告,生成测试结果的文件
(5)打包,把项目中的所有class文件、配置文件等资源放在一个压缩文件中,这个压缩文件就是项目的结果文件;java压缩文件扩展名为jar;web应用是war扩展名;
(6)安装,把生成的jar文件安装到仓库中;
(7)部署,把程序安装好,可以执行。
maven的核心知识
5.maven的核心概念:用好maven需要了解的概念
(1)POM,一个文件,文件名称为pom.xml,pom翻译为项目对象模型(Project Object Model),maven把一个项目当做一个模型使用;可以控制maven构建项目的过程,管理jar依赖;
(2)约定的目录结构,maven项目的目录和文件都是规定的;
(3)坐标,唯一的字符串,用来表示资源;
(4)依赖管理,管理项目中可以使用jar文件;
(5)仓库管理,资源存放的位置;
(6)生命周期,maven构建项目的过程;
(7)插件和目标,执行maven构建的时候用的工具是插件;
(8)继承
(9)聚合
6.maven工具的安装和配置:
(1.下载,从maven官网下载安装包,apache-maven-3.3.9-bin.zip,在maven官网中找,比较稳定;
(2.解压缩安装包,解压缩的文件放置目录中不能含有中文字符;
子目录bin:放置的是执行程序,主要是mvn.cmd;
子目录conf: maven工具本身的配置文件 settings.xml;
(3.为了方便使用,需要配置环境变量
添加环境变量MAVEN_HOME,值为bin之前的目录,MAVEN_HOME=D:\apache-maven-3.3.9;
把maven的bin目录添加到Path环境变量中:在Path的所有值之前加:%MAVEN_HOME%\bin;
如果验证不成功,把%MAVEN_HOME%\bin改成D:\apache-maven-3.3.9\bin;
(4.验证,在Windows的dos窗口输入:mvn -version,出现Apache maven的相关信息表示安装设定成功;
7.maven目录的约定目录结构
每一个maven项目在磁盘中都是一个文件夹(项目—hello)
hello/
–/src
-----/main #放置主程序java代码和配置文件
----------/java #程序的包和包中的java文件
----------/resources #java程序要使用的配置文件
-----/test #放测试程序的代码和文件(可以没有,非强制)
----------/resources #java程序要使用的配置文件
----------/java #程序的包和包中的java文件
–/pom.xml #maven的核心文件(maven项目必须有)
8.进入项目文件所在的文件夹cmd,需要计算机联网,执行mvn compile命令,编译src/main目录下的所有java文件;
(1.为什么要下载
maven工具执行的操作需要很多插件(java类-jar文件)完成的
(2.下载什么东西
jar文件——叫做插件——插件是完成某些功能的
(3.下载的东西存放什么位置
默认仓:c:\Users(登录操作系统的用户名)Administrator.m2\respository
https://repo.maven.apache.org :中央仓库的位置
执行mvn compile,结果在项目的根目录先生成target目录(结果目录)
编译的java程序,最后的.class文件都放在target目录中。
9.如何更改下载的jar包的仓(设置本机存放资源的目录位置即配置本地的仓库位置):
(1.修改maven的配置文件,maven的安装目录\conf\settings.xml
修改之前要先备份,
(2.<修改localRepository> 指定自己的目录(不要使用中文字符)//本机的目录为D:\apache-maven-3.3.9\my_local_repository
maven的使用方式
10.maven的使用方式
独立使用,通过maven的各种命令完成编译、测试、打包等;
结合开发工具使用,一般在IDEA中使用,简单、快捷;
maven的仓库
11.仓库:
(1、仓库是什么,是存放maven使用的jar包(插件),项目使用的jar包(第三方的工具)
(2、本地仓库,个人计算机上存放各种jar包;远程仓库,互联网,使用网络下载;
(3、远程仓库:中央仓库,权威的开发人员共同使用,在欧洲,https://repo.maven.apache.org ;
中央仓库的镜像,中央仓库的备份,城市的;
私服,在公司内部,局域网中使用,不对外,需要网络;
(4、仓库的运用,不需要人的参与
开发人员使用需要使用mysql驱动–>maven查本地仓库–>maven查私服–>查镜像–>查中央仓库
网络上下载的资源一定会存在本地一份
maven的POM
12.POM,projecct object model,项目的对象模型,是一个pom.xml文件,maven的核心
modelVersion,maven的版本,只能是4.0.0
groupId,组织的id,任意的字符串,一般为公司域名的倒写,比如com.baidu.项目名
artifactId,项目名称,或对应groupId的子项目
version,项目的版本号,比如1.0.2.3,如果项目还在开发,不稳定,通常在版本号后面加SNOPSHOT;
grouId,artifactId,version,三者构成坐标,唯一标识项目
(1.坐标,gav:唯一值,互联网中唯一标识一个项目
一般为公司域名的倒写
项目名称
项目的版本号
https://mvnrepository.com: 搜索使用的中央仓库,使用artifactId或者groupId为搜索条件
(2.packaging,项目打包的类型,可以为jar\war\rar\ear\pom,默认为jar,war是web的,也常用
(3.依赖,dependency和dependencies,项目中要使用的各种资源
<!----依赖,想当于java中的import---->
坐标(gav)
…
(4.properties,定义一些配置属性
(5.build,表示与项目构建相关的配置,例如编译使用的jdk版本号
maven的命令
13.maven的生命周期、命令、插件
maven的生命周期:maven构建项目的过程,清理、编译、测试、报告、打包、安装、部署
maven的命令:maven独立使用命令完成项目生命周期的执行
mvn clean,清理,删除原来编译和测试的目录,及target目录,但是已经install到库中的不会;
mvn compile,编译main中的所有.java文件,生成一个target文件,编译完成的所有.class文件放到target\classes里面,
并且把main/resource目录下的所有文件copy到target/classes里面;
mvn test-compile,编译test/java中的所有java文件,并放在target/test-classes下面;
mvn test,测试,会生成一个目录surefire-reports,保存测试结果在target\surefire-reports;
mvn package,打包main下面的所有程序,编译、编译测试、测试,并且按照pom.xml配置把主程序打包成jar或war,放在target里面;
mvn install,安装主程序,把工程打包,并且按照坐标保存到本地仓库中;
mvn deploy,部署主程序,工程打包,按照坐标保存到本地仓库、私服仓库中,自动部署到web容器中;
在执行某一个命令时,会把本阶段前面的命令都执行一遍。
maven的插件,maven命令执行,真正完成功能的是插件,是一些jar文件,一些类
1)单元测试:用的是junit,junit是一个专门测试的框架(工具);
junit测试的内容:测试的是类中的方法,每一个方法都是独立测试的;
方法是测试的基本单位(单元)
maven借助单元测试来批量测试类中的方法;
2)使用步骤:
1.加入依赖,在pom.xml文件中加入单元测试依赖
junit
junit
4.13.1
test
2.在maven项目中的src\test\java目录下,建包目录和main中一样,创建测试程序。
推荐的创建类和方法的提示:
1.测试类的名称:Test+要测试的类
2.测试的方法名称:test+方法名字
例子:测试HelloMaven类;
创建测试类TestHelloMaven
@Test
public void testAdd(){
测试HelloMaven中的Add方法是否正确
}
其中testAdd是测试方法,定义规则:
1.方法必须为public;
2.方法没有返回值;
3.方法的名称自定义,推荐:test+方法名字;
4.方法上加 @Test
14.build,maven构建项目的参数设置,设置JDK版本,配置插件;
实例:
org.apache.maven.plugins
maven-compiler-plugin
<!—插件的版本—>
3.8.1
1.8
1.8
可以在网上自己搜索插件,copy过来。
IDEA中的maven
15.IDEA中设置maven,
1.有内置的,但是修改不方便,一般不用,使用自己安装的,把安装的覆盖默认的;
2.网络搜索IDEA的maven配置;runner和maven都要配置;-DarchetypeCatalog=internal,让maven构建项目更快;
16.使用IDEA和maven联合创建java项目,使用模板:org.apache.maven.archetypes:maven-archetype-quickstart
新建的模块里面没有resource目录,这是模板的问题,需要自己添加resource目录,并且设置为resource root;
17.创建web项目,模板选择org.apache.maven.archetypes:amven-archetype-webapp
maven的依赖范围(scope)
18.依赖的范围,使用scope表示,值有:compile、test、provided,表示在项目生命周期的哪些阶段起作用;
compile,默认的依赖范围,表示整个生命周期都使用的jar包;
test,表示在测试阶段用的,其他的阶段不需要;
provided,编译测试的时候需要,打包安装的时候不需要用;
maven的其他常用操作
19.maven的常用操作
1.maven的属性设置:设置maven的常用属性;
2.maven的全局变量,既是自定义的属性
在通过自定义标签声明变量(标签名就是变量名);
在pom.xml文件的其他位置,使用
标
签
名
使
用
变
量
的
值
;
自
定
义
的
全
局
变
量
一
般
是
定
义
依
赖
的
版
本
号
,
当
项
目
中
要
使
用
多
个
相
同
的
版
本
号
时
,
先
使
用
全
局
变
量
定
义
,
再
使
用
{标签名}使用变量的值; 自定义的全局变量一般是定义依赖的版本号,当项目中要使用多个相同的版本号时, 先使用全局变量定义,再使用
标签名使用变量的值;自定义的全局变量一般是定义依赖的版本号,当项目中要使用多个相同的版本号时,先使用全局变量定义,再使用{变量名};
20.资源插件
src/main/java
/*.properties
/*.xml
false
作用:mybatis课程会用到这个作用
1.默认没有使用resources的时候,maven编译执行代码时,会把src/main/resources目录中的文件拷贝到target/classes目录下;
对于src/main/java目录下的非java文件不处理、不copy到target目录中;
2.我们的程序需要把一些文件放在src\main\java目录下,在执行java程序时,需要用到sra/main/java目录中的文件,需要maven
在mvn compile src/main/java目录下的程序时,需要把文件copy到target/classes目录中,需要在中加;
3.但是这个执行之后原来resources中文件不会copy过去;