目录
- Maven简介
- 1、软件开发中的阶段
- 2、Maven能做什么
- 3、没有使用maven怎么管理依赖
- 4、什么是maven
- 约定目录结构
- maven的使用方式
- POM文件
- 坐标的概念
- 依赖 dependency
- 打包类型
- 仓库概念
- 修改本地仓库位置
- 仓库的工作方式
- 配置文件说明
- junit单元测试
- 生命周期与插件和命令
- 自定义配置插件
Maven简介
1、软件开发中的阶段
需要分析:分析项目具体完成的功能,有什么要求,具体怎么实现。设计阶段:根据分析的结果,设计项目的使用什么技术,解决难点。开发阶段:编码实现功能,编译代码,自我测试。测试阶段:专业的测试人员,测整个项目的功能十分符合设计要求。出一个测试告。项目的打包,发布阶段:给用户安装项目。
2、Maven能做什么
1)项目的自动构建,帮助开发人员做项目代码的编译,测试,打包,安装,部署等工作。
2)管理依赖(管理项目中使用的各种jar包)。
依赖:项目中需要使用的其他资源,常见的是jar比如项目要使用mysgl驱动,我们就说项目依赖mysgl驱动。
3、没有使用maven怎么管理依赖
管理jar,需要从网络中单独下载某个jar,需要选择正确版本,手工处理jar文件之间的依赖。a.jar里面要使用b.jar的类。
4、什么是maven
maven是apache基金会的开源项目,使用java语法开发。Maven这个单词的本意是:专家,内行。读音是['meIv(e)n]或['mevn]。
maven是项目的自动化构建工具,管理项目的依赖。
约定目录结构
maven项目使用的大多人遵循的目录结构,叫做约定目录结构。一个maven项目是一个文件夹。
比如项目叫做Hello
maven的使用方式
①maven可以独立使用:创建项目,编译代码,测试程序,打包,部署等等。
② maven和idea一起使用:通过idea借助maven,实现编码,测试,打包等等。
POM文件
POM:Project Object Model项目对象模型,maven把项目当做模型处理。操作这个模型就是操作项目。maven通过pom.xml文件实现项目的构建和依赖的管理。
pom 文件:即 Project Object Model项目对象模型。 Maven把一个项目的结构和内 容抽象成一个模型,在xml文件中进行声明,以方便进行构建和描述,
pom.xml是Maven的灵魂。所以,maven环境搭建好之后,所有的学习和操
作都是关于pom.xml的。
那么我们来看一下pom.xml文件是什么样的
<?xml version=".0" encoding="UTF-8"?>
<!--project是跟标签,后面是约束文件-->
<project xmlns="http://maven.apache.org/POM/.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--pom模型的版本,就是.0.0-->
<modelVersion>.0.0</modelVersion>
<!--坐标-->
<groupId>youfei_v</groupId>
<artifactId>ch-Maven-j2se</artifactId>
<version>.0</version>
<properties>
<project.build.sourceEncoding>UTF-</project.build.sourceEncoding>
<maven.compiler.source>.8</maven.compiler.source>
<maven.compiler.target>.8</maven.compiler.target>
</properties>
</project>
坐标的概念
坐标组成是groupid,artifiactld,version。坐标概念来自数学。
坐标作用:确定资源的,是资源的唯一标识。在maven中,每个资源都有坐标。坐标值是唯一的。简称叫gav。
拿servlet依赖举例
<!--servlet依赖-->
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>.1.0</version>
groupid:组织名称,代码。公司,团体或者单位的标识。这个值常使用的公司域名的倒写。例如:学校的网站www.sanlian.com,groupId:com.sanlian
如果项目规模比较大,也可以是域名倒写+大项目名称。
例如:www.baidu.com , 无人车:com.baidu.appollo
artifactid:项目名称,如果groupId中有项目,此时当前的值就是子项目名。项目名称是唯一的。
version:版本,项目的版本号,使用的数字。三位组成。例如主版本号,次版本号小版本号,例如:5.2.5。
注意:版本号中有-SNAPSHOT,表示快照,不是稳定的版本。
项目使用gav:
1.每个maven项目,都需要有一个自己的gav。
2.管理依赖,需要使用其他的jar,也需要使用gav作为标识。
依赖 dependency
依赖:项目中要使用的其他资源(jar)。
需要使用maven表示依赖,管理依赖。通过使用dependency和gav一起完成依赖的使用。
注意:需要在pom.xml文件中,使用dependencies和dependency,还有gav完成依赖的说明。
使用依赖的格式:这里拿junit依赖举例,标签中的指的是项目的公司,标签中指的是项目名称,标签中指的是项目的版本。
<dependencies>
<!--测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>.11</version>
</dependency>
</dependencies>
注意:标签要放到标签的下面
打包类型
标签:项目打包的类型,有jar,war,ear,pom等等,默认是jar。
注意:标签的放置位置是这个项目的坐标下面
例如:
<!--坐标-->
<groupId>youfei_v</groupId>
<artifactId>ch-Maven-j2se</artifactId>
<version>.0</version>
<packaging>jar</packaging>
仓库概念
仓库是存东西的,maven的仓库存放的是:
1.maven工具自己的jar包。
2.第三方的其他jar,比如项目中要使用mysql驱动。
3.自己写的程序,可以打包为jar存放到仓库。
修改本地仓库位置
本地仓库(本机仓库):位于你自己的计算机,它是磁盘中的某个目录
本地仓库:默认路径,是你登录操作系统的账号的目录中/.m2/repository
C:\Users\NING MEI.m2\repository
修改本地仓库的位置:修改maven工具的配置文件(maven的安装路径\conf\setting.xml)步骤:
1)创建一个目录,作为仓库使用。目录不要有中文和空格。目录不要太深。
例如:D:\oppo
2)修改setting.xml文件,指定到刚刚创建的目录,例如:D:\oppo
实例演示:找到maven安装目录下的conf目录中的settings.xml文件,
在这个文件里面增加这个标签,里面指定新的仓库地址
仓库的工作方式
仓库的分类
本地仓库, 就是你的个人计算机上的文件夹,存放各种jar。
远程仓库,在互联网上的,使用网络才能使用的仓库。
①:中央仓库,最权威的,所有的开发人员都共享使用的一个集中的仓库,
②:中央仓库的镜像:就是中央仓库的备份,在各大洲,重要的城市都有镜像。
③:在公司内部,在局域网中使用的,不是对外使用的。
仓库的使用,maven仓库的使用不需要人为参与。
如果仓库中有这个jar包就会用,没有就会去互联网上下载,从网络下载的资源,最终会存到本地仓库一份, 当你下次在用的时候,直接从本地仓库首先获取资源。
例如开发人员需要使用mysql驱动,maven首先查本地仓库—>私 服—>镜像—>中央仓库。
配置文件说明
例如:spring依赖和spring-aspects依赖,这些东西表示我们项目中要用到spring和spring-aspects jar包,由maven在仓库中找到这个jar包并使用它。
<!--spring依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>.2.5.RELEASE</version>
</dependency>
<!--spring-aspects依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>.2.5.RELEASE</version>
</dependency>
注意:执行命令要在项目的pom文件所在的位置执行命名。
junit单元测试
单元测试(junit):
junit是一个单元测试的工具,在java中经常使用。
单元:在java中指的是方法。 一个方法就是一个单元,方法是测试的最小单位。
作用:使用junit去测试方法是否完成了要求。开发人员自测。
使用单元测试
<dependencies>
<!--测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>.11</version>
</dependency>
</dependencies>
在src/test/java目录中创建测试类文件。写测试代码,单元测试使用的建议:
1.测试类的定义,名称一般是Test+要测试的类名称
2.测试类它的包名和要测试的类包名一样。
3.在类中定义方法,要测试代码。
方法的定义:public方法, 没有返回值
方法名称自定义(建议Test+测试的方法名称)
方法没有参数
4在测试类中的方法,可以单独执行。测试类也可以单独执行
5.在方法的上面加入@Test
生命周期与插件和命令
maven的生命周期:项目构建的各个阶段。包括清理,编译,测试,报告,打包,安装,部署。
插件:要完成构建项目的各个阶段,要使用maven的命令,执行命令的功能是通过插件完成的。插件就是jar,一些类。
命令:执行maven功能是由命令发出的。比如mvn compile
命令:
① mvn clean:清理命令,作用删除以前生成的数据,删除target目录。
插件:maven-clean-plugin,版本是2.5。
②mvn compile:编译命令,执行的代码编译,把src/main/java目录中的java代码编译为class文件,同时把class文件拷贝到target/classes目录。这个目录classes是存放类文件的根目录(也叫做类路径, classpath)
插件:maven-compiler-plugin版本3.1编译代码的插件
maven-resources-plugin版本2.6资源插件,处理文件的。作用是把src/main/resources目录中的文件拷贝target/classes目录中。
③mvn test-compile:编译命令,编译src/test/java目录中的源文件,把生成的class拷贝到target/test-classes目录。同时把src/test/resources目录中的文件拷贝到test-clasess目录
插件:maven-compiler-plugin版本31编译代码的插件
maven-resources-plugin版本2.6资源插件,处理文件的
④mvn test:测试命令,作用执行test-classes目录的程序,测试src/main/java目录中的主程序代码是否符合要求。
插件:maven-surefire-plugin版本2.12.4
⑤mvn package:打包,作用是把项目中的资源class文件和配置文件都放到一个床缩文件中,默认压缩文件是jar
类型的。web应用是war类型,扩展是jar,war的。
插件:maven-jar-plugin版本2.4执行打包处理。生成一个jar扩展的文件,放在target目录下,I
打包的文件包含的是src/main目录中的所有的生成的class和配置文件和test无关。
⑥mvn install:把生成的打包的文件,安装到maven仓库。
插件:maven-install-plugin版本2.4把生成的jar文件安装到本地仓库。
注意:每执行一个命令,都会自动先执行前面的, 例如:执行第二个编译命令,它首先会自动执行清理命令,执行第三个编译test命令,它首先会自动执行第一个清理命令和第二个编译命令。
自定义配置插件
在pom.xml文件中,build标签中,设置插件。
例如设置构建项目相关内容
<build>
<plugins>
<!--设置插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>.8.1</version>
<configuration>
<source>.8</source> <!--指定编译代码的jdk版本-->
<target>.8</target> <!--运行java程序使用的jdk版本-->
</configuration>
</plugin>
</plugin>
</plugin>
注意:默认使用1.7版本的jdk 通过此方式 可以更改;build标签和project标签平级。