Maven学习记录
使用Maven开发的优点
- 使用Maven开发可以更加简单的管理模块之间的关系
- 可以更加简单的从网络中获取第三方jar
- 更加方便的管理jar的版本
- 更加简单的管理jar文件之间的依赖问题
- 帮你编译程序
- 帮你测试代码是否正确
- 可以打包文件,形成jar文件,或者war文件
- 更简单的部署项目
配置Maven
export M2_HOME=/Users/wenlong/Documents/Environments/apache-maven-3.8.1
export PATH=$PATH:$M2_HOME/bin
Maven核心概念
1、Maven工程约定目录结构
Hello/
---/src
-------/main #放置主程序
------------/java #程序包和包中的java文件
------------/resources # Java程序中要使用的配置文件
-------/test #放置测试文件(可以没有)
------------/java
------------/resources
---/pom.xml #maven的核心文件(maven项目必须有)
2、mvn compile 编译src/main目录下所有的java文件
- 下载:maven工具执行的操作需要很多插件
- 下载jar文件
- 下载东西的存放的位置
- 生成target结果目录
3、更改下载包的地址
config -> setting.xml -> <localRepository>/path/to/local/repo</localRepository>
4、仓库
-
仓库是存放东西的,存放maven使用jar和项目使用的jar
-
分类
- 本地仓库:就是在你的电脑上的文件夹
- 远程仓库,就是互联网上的,使用网络才能访问的仓库
- 中央仓库,最权威的,所有的开发人员都共享是用的一个集中仓库
- 中央仓库的景象:就像是中央仓库的备份,在各大洲,重要的城市都有镜像
- 私服,在公司内部,在局域网中使用,不对外开发
-
仓库的使用,maven仓库的使用,不需要人为参与
开发人员需要使用mysql驱动 --> maven首先查本地仓库 —> 私服 —> 中央仓库镜像 —> 中央仓库
最终还是下载到本地
5、pom文件
全称Project Object Model 项目对象模型
基本信息
modelVersion 4.0.0
<groupId>公司域名倒写</groupId>
<artifactId>自定义项目名</artifactId>
<version>版本号</version>
- 坐标:
groupId 组织id,一般是公司域名的倒写
artifactId 项目名称
version 版本号 如果项目还在开发中,是不稳定版本,通常在版本号 1.0.0 加 -SNAPSHOT
-
packaging 打包后压缩文件扩展名 默认为jar web应用是war :可以不写
-
依赖
dependencies 和 dependency
-
properties:设置属性
-
build:maven在进行项目的构建时,配置信息,例如编译代码使用的jdk版本
6、maven生命周期、命令、插件
- maven的使命周期:就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署
- maven的命令:maven单独使用,通过命令完成maven的生命周期的执行,maven可以使用命令,完成项目的清理,编译,测试等功能
- mvn clean 清理
- mvn compile 编译主程序
- mvn test-complie 编译测试程序
- mvn test 测试
- mvn package 打包主程序
- mvn install 安装主程序
- mvn deploy 部署主程序
- maven的插件:maven命令执行时,真正完成功能的是插件,插件就是一些jar文件,一些类
-
单元测试:用的junit,Junit是一个专门的测试的框架
junit测试的内容:测试的是类中的方法,每一个方法都是独立测试的。
方法是测试的基本单位
maven借助单元测试,批量测试你类中的大量方法是否符合预期
Maven在idea中的使用
- 设置idea的maven位置
- runner 更改jre
- runner 更改vm option 为 -DarchetypeCatalog=internal (maven项目在创建时会联网下载末班文件,使用这个选项不联网下载文件)
依赖范围
使用scope表示 默认为compile
- compile 所有过程都起作用
- test 只在测试程序的时候起作用
- provided 打包 安装时不需要使用
常用操作
maven常用操作
1.maven的属性设置
设置maven的常用属性
2.maven的全局变量
自定义的属性,1.在 通过自定义标签声明变量(标签名就是变量名)
2.在pom.xml文件中的其它位置,使用 ${标签名} 使用变量的值
自定义全局变量一般是定义 依赖的版本号, 当你的项目中要使用多个相同的版本号,
先使用全局变量定义, 在使用${变量名}
3.资源插件
<build>
<resources>
<resource>
<directory>src/main/java</directory><!--所在的目录-->
<includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!--filtering 选项 false 不启用过滤器, *.property 已经起到过滤的作用了 -->
<filtering>false</filtering>
</resource>
</resources>
</build>
作用: mybatis课程中会用到这个作用
- 默认没有使用resources的时候, maven执行编译代码时, 会把src/main/resource目录中的文件拷贝到target/classes目录中。