三、Maven的安装与配置
maven3.3.9使用最广泛,就好比jdk1.8使用最广泛,一般配套使用。
maven工具的安装和配置。
- 1、需要从maven的官网下载maven的安装包 apache-maven-3.3.9-bin.zip
- 2、解压安装包,解压到一个目录,非中文目录。子目录 bin ∶执行程序,主要是mvn.cmd
conf ∶maven工具本身的配置文件 settings.xml - 3、配置环境变量
在系统的环境变量中,指定一个M2 HOME的名称, 指定它的值是maven工具安装目录,bin之前的目录M2 HOME=D:\work\maven work\apache-maven-3.3.9
再把M2 HOME加入到path之中,在所有路径之前加入 M2 HOME%\bin; - 4、验证,新的命令行中,执行mvn -v
配置成功:
3.1、Maven约定的目录结构
1、maven约定的目录结构,约定是大家都遵循的—个规则。
每一个maven项目在磁盘中都是一个文件夹(项目-Hello)
Hello/
—/src
------/main #放你主程序java代码和配置文件
---------/java #你的程序包和包中的java文件
---------/resources #你的java程序中要使用的配置文件
------/test #放测试程序代码和文件的(可以没有)
----------/java #测试程序包和包中的1ava文件
----------/resources #测试java程序中要使用的配置文件
—/pom.xml #maven的核心文件(maven项目必须有)
吐槽:注释内容没办法对齐,我这个强迫症看了直呼难受~
命令:mvn compile
功能:编译main目录下的所有的.java文件
执行mvn compile,结果是在项目的根目录下生成target目录(结果目录),maven编译的java程序,最后的class文件都放在target目录中
https://repo.maven.apahe.org 中央仓库的地址
初次使用会自动下载jar包
1、为什么下载?
maven工具下载的操作需要很多插件完成(java类–jar文件)
2、下载什么了?
jar文件(又称为插件)插件是为了完成某些功能
3、下载文件的存在位置?
默认仓库:C:\Users(登陆操作系统的用户名).m2\repository
自定义路径:
设置本机存放资源的目录位置∶
1、修改maven的配置文件,maven安装目录/conf/settings.xml
先备份 settings.xml
2、修改local repository 指定你的目录(不要使用中文目录)
原文位置大概在49-57行
<!-- localRepository
|The path to the local repository maven will use to store artifacts.
|
|Default:${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>D:/work/maven work/maven_repository</localRepository>
3.2、仓库概念
仓库就是存放jar包的位置。
仓库分类分为本地仓库、中央仓库、第三方仓库(私服)
1、仓库的分类
本地仓库,就是你的个人计算机上的文件夹,存放各种jar
远程仓库,在互联网上的,使用网络才能使用的仓库
- 中央仓库,最权威的, 所有的开发人员都共享使用的一个集中的仓库,
https://repo.maven.apache.org:中央仓库的地址 - 中央仓库的镜像:就是中央仓库的备份, 在各大洲,重要的城市都是镜像。
- 私服:在公司内部,在局域网中使用的,不是对外使用的。
注:私服一般是公司自己建的,可以保持公司员工jar包版本保持一致。
Maven通过配置的方式从仓库获得jar包。
- 仓库的使用:(maven仓库的使用不需要认为资源)
- 开发人员使用mysql驱动,先从本地仓库拿,若没有则去私服拿,没有则去中央仓库镜像,最后再去本地仓库拿,如果最后还是没有,可能自己的配置有错误。
3.3、pom文件
pom文件:即 Project Object Model项目对象模型。Maven把一个项目的结构和内容抽象成一个模型,在xml 文件中进行声明,以方便进行构建和描述,pom.xml是 Maven 的灵魂。所以,maven 环境搭建好之后,所有的学习和操作都是关于 pom.xml 的。
pom:项目对象模型,是一个pom.xml文件
1)坐标:唯一值,在互联网中唯一标识一个项目的
<groupId>公司域名的倒写</groupId>
<artifactId>自定义项目名称</artifactId>
<version>自定版本号</version>
www.mvnrepository.com:搜索使用的中央仓库,使用groupId 或者 artifactId作为搜索条件
2)packaging:打包后压缩文件的扩展名,默认是jar,web应用是war,packaging 可以不写,默认是jar。
3) 依赖
dependencies 和dependency,相当于是 java代码中 置mport 你的项目中要使用的各种资源说明,
比我的项目要使用mysql驱动。
3.4、maven的生命周期
对项目的构建是建立在生命周期模型上的,它明确定义项目生命周期各个阶段,并且对于每一个阶段提供相对应的命令,对开发者而言仅仅需要掌握一小堆的命令就可以完成项目各个阶段的构建工作。
构建项目时按照生命周期顺序构建,每一个阶段都有特定的插件来完成。不论现在要执行生命周期中的哪个阶段,都是从这个生命周期的最初阶段开始的。
对于我们程序员而言,无论我们要进行哪个阶段的构建,直接执行相应的命令即可,无需担心它前边阶段是否构建,Maven 都会自动构建。这也就是 Maven 这种自动化构建工具给我们带来的好处。
3.5、maven的常用命令
对应项目构建的全部过程
- mvn clean 清理(会删除原来编译和测试的目录,即 target目录,但是已经 install到仓库里的包不会删除)
- mvn compile 编译主程序(会在当前目录下生成一个target,里边存放编译主程序之后生成的字节码文件)
- mvn test-compile 编译测试程序(会在当前目录下生成一个target,里边存放编译测试程序之后生成的字节码文件)
- mvn test 测试(会生成一个目录surefire-reports,保存测试结果)
- mvn package打包主程序(会编译、编译测试、测试、并且按照pom.xml 配置把主程序打包生成jar包或者 war包)
- mvn install 安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中)
- mvn deploy 部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中。还会自动把项目部署到 web 容器中)。
- 注意:执行以上命令必须在命令行进入 pom.xml所在目录!
3.6、单元测试
1、单元测试(测试方法)
单元测试(测试方法):用的是junit,junit是一个专门测试的框架(工具)。
junit测试的内容:测试的是类中的方法, 每—个方法都是独立测试的。方法是测试的基本单位(单元)。
maven是借用单元测试批量测试类中大量方法是否符合预期。
<!--单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
2、创建测试程序。
在maven项目中的src/test/java目录下,创建测试程序。
推荐的创建类和方法的提示∶
- 测试类的名称是Test + 你要测试的类名
- 测试的方法名称是:rest + 方法名称
- 例如你要测试HelloMaven,创建测试类 TestHelloMaven
@Test
public void testAdd(){
测试HelloMaven的add方法是否正确
}
- 其中testAdd叫做测试方法,它的定义规则
1)方法是public的,必须的
2)方法没有返回值,必须的
3)方法名称是自定义的,推荐是Test + 方法名称
4)在方法的上面加入 @Test
3、mvn compile
编译main/java/目录下的java为class文件, 同时把class拷贝到 target/classes目录下面把main/resources 目录下的所有文件都拷贝到target/classes目录下
<build>
<!--配置插件 -->
<plugins>
<!-- 配置具体的插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<!--插件的名称-->
<artifactId>maven-compiler-plugin</artifactId>
<!--插件的版本_-->
<version>3.8.1</version>
<!-- 配置插件的信息-->
<configuration>
<!--告诉maven 我们的写的代码是在jdk1.8上编译的。-->
<source>1.8</source>
<!-- 我们的程序应该运行在 1.8的jdk上-->
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
3.7、总结
maven生命周期,maven的命令,maven的插件
- maven的生命周期:就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署maven的命令:maven独立使用,通过命令,完成maven的生命周期的执行。
- maven可以使用命令,完成项目的清理,编译,测试等等
- maven的插件:maven命令执行时,真正完成功能的是插件,插件就是一些jar文件。