一、maven的作用
1、管理依赖:jar管理,下载,版本
2、构建项目:完成项目代码的编译,测试,打包,部署
3、使用方式:
(1)独立使用maven:使用maven的命令,完成代码的编译,测试,打包等
(2)结合开发工具使用,一般在idea中使用maven:简单,快捷,不需要记命令
二、核心概念简介
1、有哪些概念?
①POM:一个文件,名称是pom.xml,pom翻译过来叫做项目对象模型。maven把一个项目当做一个模型使用。控制maven构建项目的过程,管理jar依赖。
②约定的目录结构:maven项目的目录和文件的位置都是规定的。
③坐标:是一个唯一的字符串,用来表示资源的。
④依赖管理:管理你的项目可以使用jar文件
⑤仓库管理:你的资源存放的位置
⑥生命周期:maven工具构建项目的过程,就是生命周期
⑦插件和目标:执行maven构建的时候用的工具就是插件
⑧继承:
⑨聚合:
2、Maven工程约定目录结构
(1)maven约定的目录结构,约定是大家都遵守的一个规则。
每一个maven项目在磁盘中都是一个文件件(以项目Hello为例)
Hello/
|---/src
|---|---|/main 放主程序java代码和配置文件
|---|---|---/java 你的程序包和包中的jar文件
|---|---|---/resources 你的java程序中要使用的配置文件
|---|---|/test
|---|---|---/java 测试程序包和包中的jar文件
|---|---|---/resources 测试java程序中要使用的配置文件
|---|/pom.xml maven的核心文件【maven项目必须有】
3、pom文件【Project Object Model】
(1)groupId
1、组织id,一般是公司域名的倒写,格式可以为:
(1)域名倒写
(2)域名倒写+项目名
(2)artifactId
1、项目名称,也是模块名称,对应groupId中项目中的子项目
(3)version
1、项目的版本号。如果项目还在开发中,是不稳定版本,通常在版本后带-SNAPSHOT
2、version使用三位数字标识,例如1.1.0
(4)坐标
1、groupId、artifactId、version三个元素生成了一个Maven项目的基本坐标,在众多的maven项目中可以唯一定位到某一个项目。坐标也决定将来项目在仓库中的路径和名称。
(5)packaing
1、项目打包的类型,默认是jar,web应用是war
(6)dependency、dependencies
1、表示项目中要使用的各种资源的说明。【相当于java中的import】
2、以mysql为例:
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version>
</dependency>
</dependencies>
(7)properties
1、用来定义一些配置属性的,例如project.build.sourceEncoding(项目构建源码编码方式),可以设置为UTF-8,防止出现中文乱码,也可定义相关构建版本号,便于日后统一升级
(8)build
1、maven在进行项目的构建时,配置信息。例如指定编译java代码使用的jdk版本
4、仓库
(1)项目是什么
仓库是存放东西的,存放maven的插件和项目所需要使用的jar。
(2)仓库的分类
1、本地仓库
(1)个人计算机上的文件夹,存放各种jar
2、远程仓库
(1)就是互联网上的,使用网络才能使用的仓库
(2)中央仓库:最权威的,所有开发人员都共享的一个集中的仓库【https://repo.maven.apache.org】
(3)中央仓库的镜像:就是中央仓库的备份。
(4)私服:在公司内部,在局域网内使用,不是对外使用的。
(3)仓库的使用
1、maven的仓库的使用不需要人为参与
2、如何使用:(以mysql为例)
(1)maven首先查本地仓库
(2)如果本地仓库没有,则再查私服
(3)私服没有,再查中央仓库的景象
(4)镜像没有,再查中央仓库
5、Maven的生命周期
6、插件
(1)maven命令执行时,真正完成功能的是插件,插件是一些jar文件,一些类。
(1)单元测试
1、用的是junit,junit是一个专门测试的框架(工具)
2、junit测试的内容:测试的是类中的方法,每一个方法都是独立测试的,方法是测试的基本单位(单元)
3、maven借助单元测试,批量的测试类中的大量方法是否符合预期。
4、如何使用:
(1)加入依赖,在pom.xml加入单元测试依赖
(2)在maven项目中的src/test/java目录下,创建测试程序。
①推荐的创建测试类和方法的提示:测试类的名称是Test加上要测试的类名,测试方法的名称是Test加上要测试的方法名。
②假如要测试是HelloMaven
创建测试类 TestHelloMaven
@Test
public void testAdd(){
测试是否正确
}
其中testAdd叫做测试方法,定义规则:方法必须是public、方法必须没有返回值、方法名称自定义、方法必须加注解@Test
(2)配置插件
<build>
<plugins>
<plugin>
<groupId></groupId>
<!-- 插件名称 -->
<artifactId></artifactId>
<!-- 插件的版本 -->
<version></version>
<!-- 配置插件的信息 -->
<configuration>
<!-- 告诉maven 我们写的代码是在jdk1.8上编译的 -->
<source>1.8</source>
<!-- 程序应该在1.8的jdk上运行 -->
<target>1.8</target>
</configuration>
</plugin>
<plugin>
</plugin>
</plugins>
</build>
7、maven常用命令
执行以下命令时,必须在命令行进入pom.xml所在目录
(1)mvn compile
1、这条命令是用来编译src/main目录下的所有java文件。
2、当第一次使用这条命令的时候,需要下载一系列文件【maven工具执行操作所需的插件(jar文件)】
(1)默认下载到C:\Users\Administrator\.m2\repository【本地仓库】
(2)如何修改默认下载地址:
①修改maven的配置文件,maven安装目录/conf/settings.xml
②修改<localRepository>指定你的目录(不要使用中文目录)
3、把main/resources目录下的所有文件拷贝到target/classes目录下
(2)mvn clean
1、清理(会删除原来的编译和测试的目录,即target目录,但是已经install到仓库里的包不会删除)
(3)mvn test-compile
1、编译测试程序(会在当前目录下生成一个target,里面存放编译测试程序之后生成的字节码文件)
(4)mvn test
1、测试(会生成一个目录surefire-reports,保存测试结果)
(5)mvn package
1、打包主程序(会编译、编译测试、测试、并且按照pom.xml配置把主程序打包生成jar包或者war包)
(6)mvn install
安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中)
(7)mvn deploy
部署主程序(会把本程序打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中,还会自动把项目部署到web容器中)