Maven
手动添加jar包到maven库中
-
手工执行mvn install:install-file的命令,在本地仓库中安装这个依赖。首先复制下面这段命令,然后任意选择地方粘贴,修改后再复制粘贴到cmd窗口。
-
mvn install:install-file -Dfile=d:\apache-maven-3.0.5\jmxtools-1.2.1.jar -DgroupId=com.sun.jdmk -DartifactId=jmxtools -Dversion=1.2.1 -Dpackaging=jar
-
注意,复制后你要修改的参数: -Dfile=alipay-sdk-java-1.0.0.jar ,这是jar包的路径。 -DgroupId=com.acts (jar包的groupId) -DartifactId=alipay-sdk-java (jar包的artifactId) -Dversion=1.0.0 ,你下载的jar包的版本号 -Dpackaging=jar ,下载的文件的格式,即jar包,一般不用修改。 打开刚刚的网址,可以看到这三个参数的值,cope一下即可。
-
<!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
Maven的基础作用
-
maven可以管理jar文件
-
自动下载jar和他的文档,源代码
-
管理jar包的依赖
-
管理需要的jar包版本
-
编译程序 java->class
-
测试代码是否正确
-
打包文件,形成jar文件或是war文件
-
部署项目
构建
-
构建:项目的构建
-
构建是面向过程的,就是一些步骤,完成项目代码的编译,测试,运行,打包,部署等
-
maven支持的构建包括:
-
清理:把之前项目编译的都系删除掉,为新的编译代码做准备
-
编译:把程序源代码编译为执行代码,这个操作是批量的
-
测试:maven可以执行测试程序代码,验证你的功能是否正确,这个操作也是批量的,可以同时测试多个功能
-
报告:生成测试结果文件,测试通过就没有
-
打包:把你的项目中的所有class文件,配置文件等所有资源放到一个压缩文件中,这个压缩文件就是项目的结果文件,通常java程序的压缩文件的拓展名为jar,web项目的拓展名是war
-
安装:把上一步所生成的文件安装到本机仓库
-
部署:把程序安装好可以执行
-
Maven核心概念
-
POM:是一个文件,名称是pom.xml,POM的意思是项目对象模型,maven把一个项目当作一个模型使用,控制maven构建的项目的过程,管理jar依赖
-
约定的目录结构:maven项目的目录和文件的位置都是规定的
-
坐标:是一个唯一的字符串,用来表示资源的
-
依赖管理:管理项目所使用的jar文件
-
仓库管理:资源的存放位置
-
生命周期:maven工具构建项目的过程就是maven的生命周期
-
插件和目标:执行maven构建的时候用的工具就是插件
-
继承
-
聚合
Maven配置
-
解压安装包需要非中文目录
-
子目录
-
bin:执行程序,主要是mvn.cmd
-
conf:maven工具本身的配置文件settings.xml
-
-
配置环境变量
-
在系统的环境变量中,指定一个M2_HOME的名称,指定值为maven工具的安装目录,在bin之前,不包含bin
-
然后在path中加入%M2_HOME%\bin
-
-
验证maven配置
-
在DOS窗口中执行mvn -v查看maven的版本信息
-
若能查看成功,说明maven安装成功
-
-
注意:Maven的配置是依赖于JAVA_HOME
Maven约定目录结构和下载
Maven约定目录结构
-
每一个maven项目在磁盘中都是一个文件夹(项目-Hello)
-
Hello/ ---/src ------/main //放主程序java代码和配置文件 ---------/java //程序包和包中的java文件 ---------/resources //java程序需要使用到的配置文件 ------/test //放则是程序代码和文件的(可以没有) ---------/java //测试程序包和包中的Java文件 ---------/resources //测试Java程序中所需要的配置文件 ---/pom.xml //maven的核心文件(maven项目必须有)
Maven下载
-
在项目名的位置在DOS窗口中使用mvn compile 编译src/main目录下的所有java文件
-
再执行完mvn compile命令之后如果是第一次执行则会开始下载操作
-
Index of /:中央仓库的地址
-
为什么要下载?
-
maven工具执行了的操作需要很多插件(java类)完成的
-
-
下载什么东西?
-
jar文件在maven中叫做插件,实现功能所需要的jar
-
-
保存到哪里?
-
默认仓库(本机仓库):C:\Users\12612.m2\repository
-
-
执行mvn compile,结果是在项目的根目录下生成target目录(结果目录),maven编译的java程序,最后的class文件都放在target目录中
-
设置本机存放资源的目录位置:
-
修改maven的配置文件,maven安装目录/conf/settings.xml(先备份settings.xml)
-
修改<localrepository>指定目录下载(不要使用中文目录)
-
仓库
-
仓库是什么?仓库是存放东西的,存放maven使用的jar(插件)和我们项目所需要的jar
-
maven使用的插件(各种jar包)
-
项目所使用的jar包(第三方的工具)
-
-
仓库的分类
-
本地仓库,是在个人计算机上的文件夹,存放各种jar包
-
远程仓库,是在互联网上的,使用网络才能使用的仓库
-
中央仓库:最权威的,所有的开发人员都共享使用一个集中的仓库
-
中央仓库的镜像:就是中央仓库的备份
-
私服:在公司内部,在局域网中使用的,不对外使用
-
-
-
仓库的使用,maven仓库的使用是不需要人工参与的
-
开发人员需要使用jar包,maven会先从本地仓库查找,若没有,则会到私服中查找,若没有,则会到中央仓库的镜像中查找,若没有,则会到中央仓库中查找
-
开发人员需要使用jar包-->maven会先从本地仓库查找-->私服中查找-->中央仓库的镜像中查找-->中央仓库中查找
-
pom文件(Project Object Model项目对象模型)
-
基本信息(搜索中央仓库mvnrepository.com)
-
modelVersion:Maven模型版本,对于Maven2和Maven3来说,只能是4.0.0
-
groupId:组织id,一般是公司域名的倒写
-
artifactId:项目名称,也是模块名称,对应groupId中项目中的子项目
-
version:项目的版本号,如果在项目开发中,不是稳定版本,通常在项目后带-SNAPSHOT
-
version使用三位字符标识,1.1.0
-
-
packaging:项目打包的类型,可以使jar,war,rar,ear,pom,默认是jar
-
groupId,artifactId,version三个元素生成了一个Maven项目的基本坐标,在众多Maven项目中可以唯一定位到某一个项目,坐标也决定着将来项目在仓库中的路径以及名称
-
使用dependencies和dependency
-
可以有多个依赖
-
配置属性properties
-
构建build
-
继承parent
-
聚合modules
Maven的生命周期
-
Maven提供一个项目构建的模型,把清理,编译,测试,报告,打包,安装,部署等都会对应成一个个生命周期阶段,并对每个阶段提供相应的命令
-
Maven的常用命令:
-
mvn clean 清理(删除原来编译和测试的目录(target),但install到仓库里的不会删除)
-
mvn compile 编译主程序(会在当前目录下生成一个target,里边存放编译主程序所生成的class文件)
-
mvn test-compile 编译测试程序(会在当前目录下生成一个target,里边存放编译测试程序后所生成的class文件)
-
mvn test 测试(会生成一个surefire-reports,保存测试结果)
-
mvn package 打包主程序(会编译,编译测试,测试,并且按照pom.xml配置把主程序打包生成jar包或是war包)
-
mvn install 安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中)
-
mvn deploy 部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中,还会自动把项目部署到web容器中)
-
注意:执行以上命令时必须在pom.xml所在的目录中才能使用
-
-
单元测试(测试方法)
-
用的是junit,测试的内容是类中的方法,每一个方法都是独立测试的,方法是测试的基本单位
-
maven借助单元测试,可以批量的测试类中的大量方法是否符合预期
-
-
单元测试的使用方法
-
加入依赖
-
<!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
-
-
在maven项目中的src/test/java目录下,创建测试程序
-
推荐的创建类和方法的提示
-
测试类的名称是Test+测试的类名
-
测试方法名称是Test+方法名称
-
-
其中testAdd叫做测试方法,定义规则:
-
方法是public的,必须的
-
方法没有返回值,必须的
-
方法名称是自定义的,推荐是Test+方法名称
-
在方法上添加 @Test
-
-
-
在IDEA中设置Maven
-
首先打开IDEA后,File->Settings->Build,Execution,Deployment->Build Tools->Maven
-
设置Maven home path:Maven的文件夹位置
-
设置User settings file:Maven文件夹下conf的settings.xml文件
-
设置Local repository:Maven的本机仓库
-
-
在打开Maven->Runner
-
设置VM Option:-DarchetypeCatalog=internal,原因是maven项目在创建的时候会联网下载模板文件,比较大,使用该配置后,不用下载,创建Maven项目速度快
-
设置JRE:本机使用的JDK(推荐使用JDK1.8)
-
依赖范围
-
使用scope标签表示的
-
scope的值有compile,test,provided
-
scope:表示的是依赖使用的范围,也就是在maven构建项目的阶段中起作用(清理,编译,测试,打包,安装,部署)
Maven的常用操作
-
maven的属性设置
-
<properties>设置maven的常用属性
-
-
maven的全局变量
-
自定义属性
-
在<properties>中通过自定义标签声明变量(便签名就是变量名)
-
在pom.xml文件中的其他位置,使用${标签名}使用变量的值
-
-
-
自定义全局变量的使用:
-
自定义全局变量一边是定义依赖的版本号,当项目中要使用多个相同的版本号,先使用全局变量定义,在使用${变量名}
-
<!--资源插件--> <resource> <directory>src/main/resources</directory> <includes><!--包括目录下的.properties,.xml 文件都会扫描到--> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.txt</include> </includes> <!--filtering 选项 false 不启用过滤器, *.property 已经起到过滤的作用了 --> <filtering>false</filtering> </resource>
-
作用:mybatis会使用到(配置完插件之后)
-
没有配置
-
默认没有使用插件resource的时候,maven执行编译代码时,会把src/main/resources目录中的文件拷贝到target/classes目录中
-
面对src/main/java目录下的非java文件不处理,不拷贝到target/classes目录中
-
配置完成
-
程序需要把一些文件放在src/main/java目录中,当在执行java程序时,需要用到src/main/java目录中的文件,需要告诉maven在编译src/main/java目录下的程序时,需要把文件一同拷贝到target/classes目录中此时加入resource
-
-