简单易上手的maven基础(集成到idea+概念理解) 1.Maven的简介
1.2Maven可以干什么
1.3没有使用Maven的时候怎么管理依赖1.4什么是Maven 1.5Maven中的概念1.6Maven工具的获取和安装 二Maven的核心概念
2.1约定的目录结构(就是大多数人所遵循的目录结构)2.2pom的文件
下面我们对这个pom文件进行一一讲解 2.3坐标2.4依赖(dependency)2.5仓库2.6maven的生命周期,插件和命令2.7自定义配置插件在idea集合maven2.配置其他项目的2.创建普通的java项目(基于maven)3.3进行单元测试结语
1.Maven的简介Maven是一个自动化的构建工具
1.1软件开发的阶段
需求分析:分析这个项目具体完成的功能,有什么需求,具体怎么实现
设计阶段:根据分析的结果 设计我们的项目使用什么技术,解决难点。
开发阶段:按照设计的内容,完成功能模块的开发(也就是编码实现功能)。我们写代码就得编译代码,自我测试一下保证写的功能是符合人家给你的任务。
测试阶段:专业的测试人员,来测试项目的功能是否符合设计要求。测试后,会写一个测试报告出来
项目的打包,发布阶段:给用户去安装项目,让用户去体验。
而这些枯燥的事情 Maven去帮助我们进行工作
1.2Maven可以干什么(什么是jar包)
jar包就是把写好的类、接口、属性以及方法等打包,然后任何人在需要使用这些功能的时候引入这个jar包就可以了。这样免去了每个人重复编写代码,或者引入其他项目麻烦之处。
使用jar包的好处:某个功能的代码只需要编写一次,然后打成jar包,这样其他人使用相关功能的时候就不需要再编写代码,只需要引入jar包即可,在团队协作中可以节省很多时间,同时保证代码的一致性,到时候即使功能需要调整,也只需要改一个地方的代码,然后更新左右的jar包就可以了
1.项目的自动构建,帮助开发成员做项目代码的编译,测试,打包,安装,部署等工作。
2.管理依赖!(管理项目中使用的各种jar包)important
independence :项目中需要使用的其他资源就是依赖,常见的是jar包,比如说项目要使用MySQL驱动,那么我们就说我们的项目依赖这个驱动。
1.3没有使用Maven的时候怎么管理依赖管理jar包,需要从网络上边单独下载某个jar包
需要选择正确版本
还要手工处理jar文件直接的依赖,比如说a.jar 里面要使用b.jar的类 如果我们不熟悉这个关系的话,我们就会出错
但是出现这个Maven出现之后,这些都不需要我们的 *** 作了。
1.4什么是MavenMaven(专家,内行的意思)是Apache基金会的开源项目,使用java语法的开发。
Maven是项目的自动化的构建的工具,管理我们项目的依赖(主要的功能)。
1.5Maven中的概念1.POM
2.约定的目录结构
3.坐标
4.依赖管理
5.仓库管理
6.声明周期
7.插件和目标
1.6Maven工具的获取和安装地址
1、
确保安装了 java 环境:因为maven 本身就是 java 写的,所以要求必须安
装 JDK。
查看 java 环境变量:echo %JAVA_HOME%
2、
下载并解压 maven 安装程序:
http://maven.apache.org/download.cgi
这里还有安装包
链接:https://pan.baidu.com/s/1pOmcPh-LjXCN7uWhrGlh2w
提取码:yt12
大家自行获取就行 解压的目录不要有中文和空格
3、
配置 Maven 的环境变量:
MAVEN_HOME=d:/apache-maven-3.3.9 或者
M2_HOME=d:/apache-maven-3.3.9
path=%MAVEN_HOME%/bin; 或者%M2_HOME%/bin;
4、
验证是否安装成功:
mvn –v
出现上边的情况代表我们配置成功 我们输入 mvn -v如果配置成功就会出现这个
二Maven的核心概念 2.1约定的目录结构(就是大多数人所遵循的目录结构)约定的是可以改 但是最好不要 我们遵循就好了
一个Maven项目对应一个文件夹,比如说一个项目叫hello
Hello src main主程序目录 完成项目功能的代码和配置文件 java 放置我们的源代码 (包和相关类的定义) resources 配置文件 test 放置我们的测试代码 java 测试代码的() resources 测试程序需要的配置文件 pom.xml Maven的配置文件,核心文件
Maven可以独立使用:创建项目,编译代码,测试程序,打包,部署等等
Maven和idea一起使用,
输入mvn compile要在有pom.xml文件下才能输入这个命令 不然不会帮助我们进行编译
2.2pom的文件DOM就是我们把整个页面当做一个对象来使用。
pom把我们的项目当做模型进行处理,处理这个模型就是 *** 作整个项目
即 Project Object Model 项目对象模型。Maven 把一个项目的结构和内
容抽象成一个模型,在 xml 文件中进行声明,以方便进行构建和描述,
pom.xml 是 Maven 的灵魂。所以,maven 环境搭建好之后,所有的学习和 ***
作都是关于 pom.xml 的。
也即是说 我们绝大多数时间都是和这个文件打交道的
Maven通过pom.xml文件实现项目的1构建和依赖的管理 *** 作
下面我们对这个pom文件进行一一讲解//project 是一个根标签,后面是约束文件2.3坐标//这个是代表pom这个模型的版本 4.0.0 //这个叫做坐标com.bjpowernode ch01-maven1.0-SNAPSHOT 1.8 1.8 1.8
坐标的组成为下面三部分,坐标的概念来自数学x y z 我们通过x y z三点可以确定一个唯一的点,同样的在这里我们可以通过下面这三个值确定互联网上的唯一的值
com.bjpowernode ch01-maven1.0-SNAPSHOT
坐标的作用 是确定资源的唯一标识,在Maven中,每一个资源都得对应一个坐标,简称gav
com.bjpowernode ch01-maven1.0-SNAPSHOT grouId:组织名称,代码。公司团体或者单位的表示,这个值常使用的是公司域名的倒写。 artifactId:叫做项目名称 如果groupid中有项目的话,此时当前的值就是子项目名。项目名称一般也是唯一的 version:表示版本的意思,项目的版本号5.2.5版本 这个都是我们自己定义的版本号 注意 如果你的版本号中出现 sharpshot的时候 那么说实话是一个快照,表示不稳定这个版本。
项目中使用坐标gav
1.每个maven都需要一个自己的gav
2.管理依赖的时候,需要使用其他的jar包,也需要其他gav
搜索(我们想要使用直接来这里找就行)
Maven Repository: Search/Browse/Explore (mvnrepository.com)
这里对应我们想要下载的jar包都在这里面
2.4依赖(dependency)依赖指的是说 你的项目使用的其他资源(jar)。比如说你用到了MySQL驱动 说明你依赖MySQL驱动。
通过使用dependency和gav一起完成依赖的使用。
我们需要在pom.xml文件中,使用dependency和dependencies
//这个里面有很多的dependency在其中 org.springframework.boot spring-boot-starter-thymeleaforg.springframework.boot spring-boot-starter-web项目的打包类型,有jar,war,ear,pom等等 默认是jar 这个放在坐标的下面
我们输入进去 之后 我们的maven会默默的在后面工作 帮助我们从互联网上去下载 我们就不用管了。
maven使用gav作为标识,从互联网上下载依赖的jar包。下载到本机上边,有maven管理项目使用的这些jar包。
我们可以从这个网站获取这些依赖Maven Repository: Search/Browse/Explore (mvnrepository.com)
2.5仓库仓库是存放东西的吗,maven的仓库存放的是
1.maven工具自己需要的jar包
2.第三方其他的jar包 (比如说项目中需要用到的MySQL驱动)
3.自己写的程序可以打包为一个jar存放到仓库里面去。
仓库的分类
1.本地仓库(本机仓库):自己的计算机之上的,位于磁盘中的某个目录
本地仓库默认位置在 是你登陆 *** 作系统的账号的目录中/.m2.responsity
修改本地仓库的位置 :需要修改maven工具的配置文件(maven的安装路径confsettings.xml)
1.创建一个目录作为仓库使用(这个目录不要有中文和空格 也不用目录太深)
2.例如D:openrepository
3.修改setting.xml文件,指定D:Myrepository这个目录//这个是我们自己创建的目录下的文件 *** 作 注意将反斜杠的位置换一下
D:/Myrepository
然后我们将我们的文件直接copy过来到我们的这个新建的目录下面就行了
我们仓库中有的东西 ,我们在进行编译的时候我们就可以直接从里面拿 要是没有 maven就会帮助我们从网上下载 下载完成之后就会在我们的本地仓库里面。
3.我们每个人都需要一个本地仓库的
仓库的分类 1 本地仓库,就是你的个人计算机上的文件夹,存放各种jar
2.远程仓库,在互联网上的,使用网络才能使用的仓科
3.中央仓库 最权威的,所有开发人员都共享的一个集中仓库,
地址Maven Repository: Search/Browse/Explore (mvnrepository.com)
中央仓库的镜像 就是中央仓库的备份,在各大洲,重要的城市都是镜像
我们的用户都是先从本州的镜像里面去访问数据 如果拿到的话 就不用去中央仓库里面去拿,这样一定上的减轻了中央仓库的压力
4.私服 用在局域网,公司内部进行使用的 不是对外使用的这个 公司以外的人员用不了的意思是
2.6maven的生命周期,插件和命令
maven的生命周期就是:项目的构建的各个阶段。包括清理,编译,测试,报告,打包,安装,部署。
插件:要完成构建项目的各个阶段,要使用maven命令,执行命令的功能是通过插件完成的,插件就是jar包,一些类。
命令:执行maven的功能是由命令发出的, 比如 mvn compile
单元测试(Junit)是一个单元测试工具,一个方法就是一个单元,方法是测试的最小单元。
作用:使用print去测试方法是否完成了要求。开发人员自己测试。我们之前是使用main测试 但是要是同时测试多个方法咋办?会很乱的
使用单元测试:
1.加入Junit的依赖(一些类和方法)(我们先看一下我们本地仓库里面有没有这个依赖)
junit junit4.12 test
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8iyC9SNO-1642737058620)(C:Users86189AppDataRoamingTyporatypora-user-imagesimage-20220120221216381.png)]
2.我们在src/test/java目录中创建测试类文件,写测试代码。
单元测试使用的建议
1.测试类的定义,建议一般是test+要测试的类的名称
2.测试类它的包名要和测试的类包名一样。
3.在类中定义方法,要测试代码。
方法定义:public方法,
没有返回值
方法名称自定义
方法没有参数
4.在测试类中的方法,可以单独执行测试类也可以单独执行!!!
5.在方法上面加上@Tset注解
//下面是自己书写的 测试代码
package com.yt1105; import org.junit.Assert; import org.junit.Test; public class TestHelloMaven{ @Test public void testAddNumber(){ System.out.println("执行 HelloMaven 类 addNumber()方法"); int n1 = 10; int n2 = 20; int res = 0; HelloMaven hello =new HelloMaven(); res = hello.addNumber(n1,n2); // 期望值,实际值 //把计算的结果交给Junit进行判断 Assert.assertEquals(30,res); } @Test public void testAddNumber(){ System.out.println("执行 HelloMaven 类 addNumber()方法"); int n1 = 10; int n2 = 30; int res = 0; HelloMaven hello =new HelloMaven(); res = hello.addNumber(n1,n2); // 期望值,实际值 //把计算的结果交给Junit进行判断 Assert.assertEquals(40,res); } }
命令
mvn clean: 清理命令,作用删除以前生成额数据,删除targe
maven-clean-plugin:2.5:clean 这个是用的插件
作用就是删除target目录
2.编译代码
mvn compile 执行代码的编译 把src/main/java 代码编译为class文件
同时把class文件拷贝到target/classes目录,这个目录classes是存放类文件的根目录,也叫做类路径,classpath
使用的插件是
maven-resources-plugin:2.6:resources 用来copy文件的 *** 作,是把src/main/resources目录中的文件copy到target/classes下
maven-compiler-plugin:3.1:compile 这个是用来编译代码的功能
3).mvn test-compile 编译src/test/java目录中的源文件,把生成的class直接copy到target/test/test-classes目录下面
同时把src/test/resources目录中的文件拷贝到test-classes目录中。
4).mvn test 测试命令 ,作用执行test-classes目录中的程序,测试我们之前写的main方法中的主程序代码是否符合要求。
执行的截图
第一个是一个文本里面是我们的测试报告。
5.mvn package:
这个叫做打包 *** 作,把我们的项目中的资源和配置文件都放到一个压缩文件中,默认压缩文件是jar类型的。web应该是一个war类型。
打包类似于压缩 处理
然后我们如何对我们当前的项目进行打包处理
使用的插件是maven-jar-plugin:2.4,执行打包处理,会生成一个jar扩展的文件,放在target目录下面。
com.bjpowernode ch01-maven1.0-SNAPSHOT jar 打包的文件名字 artifactID+version+packing 就组成了我们的文件
我们打开看看里面是什么东西 我们采取压缩文件的方式进行打开就行
com里面不就是我们的类文件
这些东西都来字我们的main里面 和我们的test无关(来自我们的src/main/目录中生成的class和配置文件)
我们以后就把这个jar文件拷给我们的同事就好
6.mvn install
把我们生成的打包文件,安装到maven仓库
插件: maven-install-plugin 版本 2.4 。 把生成的jar文件安装到本地仓库。
我们看看这个路径怎么组成的
com.bjpowernode ch01-maven1.0-SNAPSHOT jar groupId中的值, 如果有 "."作分隔的话, 前和后都是独立的文件夹。 combjpowernode 这就是两个文件夹 artifactId, 独立的文件夹 就会出现一个叫做ch01-maven的独立文件夹 version,独立的文件夹
7.mvn deploy 这个是将我们的部署 *** 作(不先学)
以上所以命令必须是在pom.xml所在的目录下面才行。
2.7自定义配置插件在pom.xml里面配置的,
这个是我们比较常用的插件
在idea集合maven3.1idea中继承maven
idea中有一个自带的maven,但是自带的不方便,我们要让idea使用我们自己安装的maven
1.设置当前项目的maven相关配置
2.配置其他项目的我们2020版本的在
这里
2.创建普通的java项目(基于maven)这里是添加模版创建项目的
这个创建的目录和我们自己手写的一样 这样就是创建成功了
这里我们可以取设置我们目录的类型
3.3进行单元测试3.4maven中的工具命令
结语到这里我们的项目基本就是可以满足需要的使用
idea中集成了maven的话就是大大便利了我们的开发效率,可以说是十分的方便
简单理解,maven就是我们的一个小助手,帮助我们去完成了各式各样的导包 *** 作。
大家要是觉得不错可以
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)