目 录
Maven可以做什么?
自动下载jar和他的文档,源代码
管理jar直接的依赖,a.jar需要b.jar,maven会自动下载b.jar
管理你需要的jar版本
帮你编译程序,把java编译为class
帮你测试代码是否正确
帮你打包文件,形成jar文件,或者war文件
帮你部署项目
什么是构建?maven支持的构建有哪些?
构件是面向过程的,就是一些步骤,完成项目代码的编译,测试,运行,打包,部署等等
maven支持的构建包括:
- 清理,把之前的项目变异的东西删除掉,为新的编译代码做准备
- 编译,把程序源代码编译为执行代码,java-class文件
- 测试,maven可以执行测试程序代码,验证你的功能是否正确。
- 报告,生成测试结果的文件,测试通过没有
- 打包,把你的项目中所有的class文件,配置文件等所有资源放到一个压缩文件中
- 安装,把5中生成的文件jar,war安装到本机仓库
- 部署,把程序安装好,可以执行
maven的核心概念
- POM:一个文件pom.xml,pom翻译过来叫项目对象模型。maven把一个项目当做一个模型使用。
- 约定的目录结构:maven项目的目录和文件的位置都是有规定的
- 坐标:是一个唯一的字符串,用来表示资源的
- 依赖管理:管理你的项目中可以使用的jar文件
- 仓库管理:你的资源存放的位置
- 生命周期:maven工具构建项目的过程
- 插件和目标:执行maven构建的时候,用的工具是插件
- 继承
- 聚合
maven工具的安装和配置
- 从官网下载maven安装包
- 解压到一个英文路径的目录
- 配置环境变量
在系统环境变量中,指定一个M2_HOME的名称,指定它的值是maven工具安装目录再把M2_HOME加入到Path之中,在所有路径之前加入 %M2_HOME%\bin; - 验证,在新的命令行中,执行 mvn -v
maven约定的目录结构
★★★项目目录结构
每一个maven项目在磁盘中都是一个文件夹(项目-Hello)
Hello/
---/src
------/main #主程序目录(java代码,配置文件)
---------/java #程序的包和包中的java文件
---------/resources #java程序中要使用的配置文件
------/test #测试程序目录
---------/java #测试程序的包和包中的java文件
---------/resources #测试java程序中要使用的配置文件
-------/pom.xml #maven的核心文件
mvn compile命令,编译src/main目录下的所有java文件
为什么要下载?
maven工具执行的操作需要很多插件(java类-jar文件)完成
下载什么了?
jar文件-叫做插件-插件是为了完成某些功能
下载的东西存在哪?
默认仓库位置(可以自定义仓库路径)
C:\Users\用户名.m2\repository
执行 mvn compile 结果是在项目的根目录下生成target目录(结果目录)
maven编译的java程序,最后的class文件都放在target目录中
仓库
-
仓库是什么?
仓库是存放东西的,存放maven使用的jar和我们项目使用的jar -
仓库的分类:
本地仓库,在我个人计算机上的一个文件夹,存放各种jar包
远程仓库,在互联网上,使用网络才能使用的仓库
中央仓库:https://repo.maven.apache.org
中央仓库的镜像,中央仓库的备份(可使用阿里云)
私服,私人服务器 -
仓库的使用
maven仓库的使用不需要人为参与
例如:开发人员需要使用mysql驱动—>maven首先查本地仓库—>私服—>镜像–>中央仓库 -
怎么修改本机存放资源的目录位置?(设置本机仓库位置)
1.修改maven的配置文件,maven安装目录/conf/settings.xml
先备份settings.xml
2.修改<localRepository>
指定你的目录(非中文) -
POM:项目对象模型,pom.xml是maven的核心
★★★坐标(gav):
唯一值,在互联网中唯一标识一个项目的
<groupId>公司域名倒写</groupId>
<artifactId>自定义项目名称</artifactId>
<version>自定义版本号</version>
packaging:
打包后压缩文件的扩展名,默认是jar,web应用是war
★★★依赖:
dependencies和dependency 相当于java中的import,是项目中要使用的各种资源说明
properties:
设置属性
build:
maven在进行项目的构件时的配置信息
scope:
设置依赖范围:
compile(清理、编译、测试、打包、安装时都会用到)
test(测试时有效)
provided(执行、测试时有效。在部署时,由服务器提供,项目本身不需要自带)
例如:
<!--坐标(gav)-->
<groupId>org.example</groupId>
<artifactId>03-javaweb-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!--单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- Servlet核心包 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!--JSP -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
maven生命周期,maven的命令,maven的插件
-
maven的生命周期:
就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署 -
maven的命令:
maven独立使用,通过命令完成maven的声明周期的执行
常用命令:
mvn clean
清理(删除原来编译和测试的目录,即target目录)
mvn compile
编译主程序(会在当前目录下生成一个target,存放编译主程序后的class文件)
mvn test-compile
编译测试程序(会在当前目录下生成一个target,存放编译测试程序后的class文件)
mvn test
可以进行单元测试(使用junit测试 src/main/java目录中的程序是否符合要求)
mvn package
打包(把程序中src/main/下面的class和resources中的配置文件放入到压缩包中)
mvn install
安装(把jar,war安装到本机的仓库中) -
maven的插件:
maven命令执行时,真正完成功能的是插件,插件就是一些jar文件例如: 单元测试(测试方法):用的是junit,junit是一个专门测试的框架(工具) junit测试的内容:测试的是类中的方法,每个方法都是独立测试的 maven借助单元测试,批量测试类中大量方法是否符合预期 使用步骤: 加入依赖,在pom.xml加入单元测试依赖 在maven项目中的src/test/java目录下,创建测试程序 推荐提示: 测试类:Test+类名 测试方法(public;无返回值;方法上要加注解):Test+方法名
在IDEA中设置maven
-
IDEA中内置有Maven,也可手动配置Maven
配置入口(当前项目):file–settings–Build–Build Tools–Maven–>配置根目录、配置文件、本机仓库
配置入口(新项目):New Project settings–Build–Build Tools–Maven–>配置根目录、配置文件、本机仓库
可以在:file–settings–Build–Build Tools–Maven–>Runner下VM Option上填写:-DarchetypeCatalog=internal
(不用从外部网站上下载模版,从本机上获取)可以在:file–settings–Build–Build Tools–Maven
–>JRE上选择:使用的JDK版本
-
Maven模版创建项目
maven-archetype-quickstart:普通的java项目
maven-archetype-webapp:web项目
maven常用操作
-
maven的属性设置
设置maven的常用属性 -
maven的全局变量
自定义的属性
在pom.xml文件中的<properties>
中,通过自定义标签声明变量
在pom.xml文件中的其他位置使用${标签名}使用变量的值
自定义全局变量一般是定义依赖的版本号 -
资源插件