maven 通篇学习
Maven
Maven简介
-
maven官网
-
软件工程
- 在设计和构建软件时能够有一种规范和工程化的方法
-
maven是自动化构建工具
-
传统的完成一个java项目:
- 第一步:分析项目的组成部分
- 第二步:设计项目的步骤,技术,事件,人力
- 第三步:组建团队,购置设备
- 第四步:开发代码,开发人员测试代码(重复多次的工作)
- 测试人员测试功能是否符合要求
- 测试人员测试开发人员提交的代码->开发人员修改->开发人员修改.....测试代码通过
- 缺点:
- 很多模块,模块之间的关系管理麻烦
- 需要很多第三方功能,需要很多jar包,手工下载
- 需要管理jar的版本
- 管理依赖,jar之间的依赖 a.jar需要b.jar这个关系称为依赖
-
maven完成一个java项目:
- 优点:
- maven可以管理jar文件
- 自动下载jar和他的文档,源代码
- 管理jar直接的依赖
- 管理jar的版本
- 编译程序,把java编译成class
- 测试程序
- 把包文件形成jar文件,或者是war文件
- 部署项目
- 优点:
-
构建:项目的构建
- 构建是面向过程的,一些步骤,完成项目代码的编译,测试,运行,打包,部署等
- 第一:清理
- 将之前的项目清理
- 第二: 编译
- 将程序源代码编译为可执行的代码 java-class文件
- 批量的编译
- 第三:测试
- 执行测试程序代码,验证程序是否正确
- 批量的测试
- 第四: 报告
- 生成测试结果的报告
- 第五: 打包
- 将项目中所有的class文件,配置文件等所有的资源放到一个压缩文件当中
- java文件放到jar包中,web文件放到war包中
- 第六: 安装
- 将生成的文件jar,war安装到本机仓库中
- 第七: 部署
- 把程序安装好就可以执行了
- 第一:清理
- 构建是面向过程的,一些步骤,完成项目代码的编译,测试,运行,打包,部署等
Maven核心概念
-
第一个: POM
- 一个文件,名称是pom
- 翻译是: 项目对象模型
- maven把一个项目当做一个模型使用.
-
第二个:约定的目录结构
- maven项目的目录和文件的位置是有规定的
-
第三个: 坐标
- 是一个唯一的字符串,用来表示资源的
-
第四个:依赖管理
- 管理项目中可以使用的jar文件
-
第五个:仓库管理 (了解)
- 资源存放的位置
-
第六个:声明周期 (了解)
- Maven构建项目的过程
-
第七个:插件和目标 (了解)
- 执行maven构建的时候用的工具
-
第八个:继承
-
第九个:聚合
-
注意: maven的使用,是先难后易的,后期可以在idea中使用
-
maven工具的安装和配置
- 第一步:官网下载 http://maven.apache.org/
- apache-maven-3.8.5
- 第二步:解压压缩包
- 子目录:
- bin: 执行程序,主要是mvn.cmd
- conf:maven工具开发本身的配置文件 settings.xml
- 子目录:
- 第三步:配置环境变量
- 在系统的环境变量中
- M2_HOME的名称,指定它的值是maven工具安装目录,bin之前的目录
- M2_HOME=D:\JavaDev\apache-maven-3.8.5
- 再把M2_HOME加入到path之中,在路径中加入%M2_HOME%\bin
- 验证:
- 在新的命令行中执行:mvn -v
- Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
Maven home: D:\JavaDev\apache-maven-3.8.5
Java version: 1.8.0_311, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_311\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows" - 成功配置
- 在系统的环境变量中
- 第一步:官网下载 http://maven.apache.org/
Maven工程约定目录结构
- 约定是大家遵循的一种目录结构
- 每一个maven项目在磁盘上都是文件夹 (项目)
- 实例:
- Hello/
- /src
- /main 放置主程序
- /java java文件
- /resources 使用的配置文件
- /test 放置测试程序代码和文件的(可以没有)
- /java 测试java文件
- /resources 测试使用的配置文件
- /main 放置主程序
- /pom.xml maven的核心文件
- /src
- 疑问:mvn compile 编译src/main目录下的所有java文件
- 为什么要下载:
- maven工具执行的操作需要很多的插件(java类--jar文件)完成的
- 下载什么:
- 插件(java类--jar文件)
- 完成某些功能
- 下载存放的位置:
- C:\Users\92822.m2\repository
- 默认仓库(本机仓库) 路径可以改
- 为什么要下载:
- 执行的结果;
- 在项目的根目录下生成target目录(结果目录)
- Hello/
仓库
- 设置本机存放资源的位置:
- 第一步:修改maven的配置文件 maven安装目录/conf/settings.xml
- 修改前先备份
- 第二步:修改localRepository 指定你的目录(不要使用中文目录)
- 第一步:修改maven的配置文件 maven安装目录/conf/settings.xml
- 仓库的定义:
- 仓库是存放东西的,存放maven的插件,项目要使用的jar包
- maven插件 ---jar包
- 项目使用的jar----第三方的工具
- 仓库的分类:
- 本地仓库:
- 个人计算机上的文件夹 存放各种jar
- 远程仓库:
- 在互联网上的,使用网络才能使用的
- 中央仓库 central
- 世界上所有的开发人员共享的仓库
- https://repo.maven.apache.org
- 中央仓库的镜像
- 中央仓库的备份
- 在各大洲或者各大城市都有备份
- 私服
- 在公司的局域网中使用,不对外使用
- 中央仓库 central
- 在互联网上的,使用网络才能使用的
- 本地仓库:
- 仓库的运用:
- maven仓库的使用不需要人为的参与
- 开发人员要使用mysql驱动-->maven首先查本地仓库-->私服-->中央仓库的镜像-->中央仓库
- 一级一级查找
POM文件
-
Project Object Model 项目对象模型
-
modelVersion
- Maven模型的版本,4.0.0
-
groupId
- 组织名称 一般是公司域名的倒写
- 例如: com.baidu 域名+项目名 com.baidu.appolo
-
artifactId
- 项目名称 也是模块的名称 对应groupId中项目的子项目
-
version
- 版本号
- 一般使用三位数字表示 如 1.0.0
- -SNAPSHOT 不稳定版本 快照
注意: groupId artifactId version组合起来是坐标
- packaging
- 项目打包的类型
- 可以是jar war rar ear pom 默认是jar
- dependencies 和 dependendency
- 依赖 相当于import
- 管理需要用到的各种资源说明
- 如: mysql驱动
- properties
- 定义配置属性
- build
- maven在进行项目的构建时,一些配置信息
- parent
- 继承
- modules
- 聚合
-
坐标
-
例子:
-
com.gangwan 公司域名倒写ch01-maven 自定义项目的名称1.0-SNAPSHOT 版本号-
唯一值,用来在互联网中标识项目的
-
搜索使用的中央仓库
- 使用groupId 或者是 artifactId作为搜索条件
-
-
Maven的生命周期
-
maven构建项目的过程
-
清理
-
编译
-
测试
-
报告
-
打包
-
安装
-
部署
Maven的常用命令
-
独立使用时:
- 通过命令,完成maven的生命周期
-
常用的命令:
-
第一个: mvn clean
- 清理
- 清理原有的项目目录,即是target目录
-
第二个:mvn compile
- 编译src下的java主程序文件
- 生成的class文件,同时放到target/classes目录下面
- 把main/resources目录下的所有文件 拷贝到target/classes目录之下
-
第三个: mvn test-compile
- 编译test下的java文件
-
第四个:mvn test
- 测试
- 生成一个目录surefire-reports
- 保存测试结果
-
第五个:mvn package
- 打包主程序
- 只包含main目录下的java主程序的class文件
-
第六个: mvn install
- 安装主程序
-
第七个:mvn deploy
-
部署主程序
注意:执行以上命令必须在命令行进入pom.xml所在目录
注意: pom.xml文件中只有一个
其他需要添加的依赖
-
-
-
单元测试:
-
junit
-
专门测试的框架( 工具 )
-
内容
- 类中的方法,每一个方法都是独立测试的
- 方法是测试的基本单位(叫做单元)
-
批量的测试类中的大量方法
-
使用步骤
-
第一步:在pom.xml文件中加入单元测试依赖
-
junit junit 4.12 test
-
-
在maven项目中的src/test/java目录下,创建测试程序
- 推荐的创建类和方法的提示:
- 测试类的名称,是Test+测试的类名
- 测试的方法名称,是test + 方法名称
- 推荐的创建类和方法的提示:
-
例如:测试Hello
-
创建测试类 TestHello
-
创建测试方法
-
@Test
-
public void testAdd(){
测试HelloMaven的add方法是否正确
}
其中testAdd叫做测试方法,他的定义规则
- 1,方法是public ,必须的
- 2,方法没有返回值, 必须的
- 3,名称是自定义的 推荐是 testAdd
- 4,在方法的上面加入@test
-
-
-
-
-
Maven插件
-
maven命令执行时真正执行的是插件 plugin
- 就是一些jar文件,一些类
- 在pom的文件中配置build
-
第一个:compile插件
- maven-compiler-plugin
- 编译插件
<!-- 控制配置maven构建项目的参数设置,配置jdk的版本 --> <build> <!-- 配置插件 --> <plugins> <!-- 配置具体的插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <!-- 插件的名称 --> <artifactId>maven-compiler-plugin</artifactId> <!-- 插件的版本 --> <version>3.8.5</version> <!-- 配置插件的信息 --> <configuration> <!-- 告知jdk1.8 --> <source>1.8</source> <!-- 告知运行在jdk1.8的jdk上 --> <target>1.8</target> </configuration> </plugin> </plugins> </build> -
第二个:test插件
- maven-compiler-plugin
- 同主程序插件是相同的,但是执行的目标不同
-
第三个:package插件
- maven-jar-plugin
- 将class文件,配置文件打包
-
第四个:install 安装插件
- maven-install-plugin
-
第五个:deploy 发布插件
在IDEA使用Maven构建项目
-
在idea中设置maven
-
一般不使用idea内置的maven (不好修改设置)
-
步骤:
-
第一步:设置maven
-
-
settings 为当前项目设置maven
- flie---->settings---->Build,Execution,Deployment---->Build Tools---->maven
- maven Home path : maven安装的目录
- User home File : 就是maven安装目录conf/setting.xml文件
- Local Repository: 本机仓库的目录位置
---Build Tools-Maven-Runner--
VM Options : -DarchetypeCatalog=internal
-
maven的项目在创建时会下载模板文件,比较慢,使用这个会调用内置的模板文件
JRE:你项目的jdk
-
-
-
other settings 为以后的项目设置maven
- flie---->New projects setup---->setting for new projects---->Build,Execution,Deployment---->Build Tools---->maven
- maven Home path : maven安装的目录
- User home File : 就是maven安装目录conf/setting.xml文件
- Local Repository: 本机仓库的目录位置
---Build Tools-Maven-Runner--
VM Options : -DarchetypeCatalog=internal
- maven的项目在创建时会下载模板文件,比较慢,使用这个会调用内置的模板文件
JRE:你项目的jdk
注意:两个settings的设置是一样的
-
-
-
第二步:使用模板创建项目
- maven-archetype-quickstart 普通的java项目
- maven-archetype-webapp web工程项目
-
-
-
导入maven项目
- 直接在projects structure中设置
依赖管理
-
依赖的范围
- scope表示
- scope的值有compile test provided
- scope在maven构建项目的哪些阶段中起作用
- maven构建项目有clean compile test package install deploy
- scope表示
-
junit的范围是 test
-
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency>
-
-
默认是compile都存在
-
provided
- compile
- test
- 这两个阶段都要用到
maven的常用操作
-
第一个:maven的属性设置
设置maven的常用属性
-
第二个:maven的全局变量
- 自定义的属性
- 1,在
通过自定义标签自定义变量(标签名就是变量名) - 2,在pom.cml文件中的其他位置,使用$(标签名)使用变量的值
-
自定义全局变量一般是定义 依赖的版本号 当你的项目要使用多个相同的版本号时,
先使用全局变量定义,在使用$(变量名)
-
第三个:资源插件
-
<!-- 控制配置maven构建项目的参数设置,配置jdk的版本 --> <build> <!-- 配置插件 --> <resource> ........ </resource> </build> -
作用:mybatis需要用到这个作用
-
1,默认没有使用resources的时候,maven执行编译代码时,会把src/main/resources目录下的文件拷贝到target/classes目录下, 对于src/main/java目录下的非java文件不处理,不拷贝到target/classes目录中
-
2,我们需要把一些文件放到src/main/java目录下,需要拷贝到target/classes目录
此时就需要在
中加入 插件.
-
-
浙公网安备 33010602011771号