一、Maven项目构建之前基础认识
1、常用概念简介
项目对象模型POM(Project Object Model):每一个Maven项目中都必定会有一个pom.xml文件来定义构建项目的对象模型;
项目生命周期(Project Lifecycle):Maven中的每一个动作都有一个生命周期,比如mvn clean用来清理编译的class文件,mvn compile用来编译java文件,而mvn clean compile就是先清理再编译,不同的动作有不同的生命周期;
项目依赖管理(Project Dependency Management):这里的依赖是指jar包之间的相互依赖关系,比如我们要使用Spring框架的AOP功能时,只有一个spring-aop.jar包是远远不够的,它还依赖于spring-core.jar、spring-beans.jar包等,没有这些jar包的配合,我们就无法完成一个AOP功能,这就是依赖关系,而Maven就可以帮我们管理这些jar包之间的依赖关系。
2、Maven的项目约定
Maven中使用项目约定,它约定Java源代码放在哪个目录,约定编译的class文件放在哪个目录,约定资源或配置文件放在哪个目录,每一种文件的存放目录都有着明确的约定,下面是Maven的项目约定结构图:
MavenProject(项目根目录)
|----src —— 源代码目录
| |----main
| | |----java —— 存放项目的.java文件
| | |----resources —— 存放项目资源文件,如spring、hibernate配置文件
|----src —— 源代码目录
| |----main
| | |----java —— 存放项目的.java文件
| | |----resources —— 存放项目资源文件,如spring、hibernate配置文件
| | |----webapp —— 如果是web项目则需要该目录,存放WEB-INF目录、web.xml、jsp、html、js等文件
| |----test
| | |----java —— 存放所有测试.java文件,如JUnit测试类
| | |----resources —— 存放项目测试用的资源文件,如spring, hibernate配置文件
|----target —— 项目输出目录,存放经过编译的class文件和打包部署的jar包等
|----pom.xml —— 定义项目的对象模型,同时标识该项目是一个Maven项目
| | |----java —— 存放所有测试.java文件,如JUnit测试类
| | |----resources —— 存放项目测试用的资源文件,如spring, hibernate配置文件
|----target —— 项目输出目录,存放经过编译的class文件和打包部署的jar包等
|----pom.xml —— 定义项目的对象模型,同时标识该项目是一个Maven项目
3、Maven仓库(Maven Repository)
maven仓库是存放jar包的地方,当我们构建Maven项目时,不需要再像之前那样手动将jar包复制到lib目录中了,Maven会根据你在pom.xml文件中所定义的jar包依赖来引用对应的jar包,在引用jar包时,它会首先到你的本地仓库中去找,如果没有找到你所需要的jar包,它就会到Maven的中心仓库中将jar包下载到本地仓库中,下次使用的时候就不需要下载了,当你打包项目时,它会帮你把引用的jar包从本地仓库复制到你的项目中去,比较方便,Maven默认的jar包本地存放目录是在C盘中的${user.home}/.m2/repository(user.home是指你的windows用户名),默认存放目录是可以修改的,后面会介绍。
二、手动创建简单的Maven项目
1、创建项目根目录文件夹,如MavenDemo,并在该目录中创建pom.xml文件,文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<!--下面四个配置对于Maven项目来说是必须配置的-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<!--项目对象模型所使用的版本号,固定的-->
<modelVersion>4.0.0</modelVersion>
<!--项目组标识,一般为公司或组织机构名称,默认使用此名称为包名-->
<groupId>com.mengfei.maven</groupId>
<!--项目组中的项目标识,一般默认为项目中的模块名(如果项目中只有一个模块,默认为项目名)-->
<artifactId>MavenDemo</artifactId>
<!--当前项目的版本号,可自定义-->
<version>0.0.1</version>
</project>
2、创建测试用的java文件
Maven中的java文件约定是存放在src/main/java目录下的,我们在根目录下创建src目录,在src目录下创建main目录,在main目录下创建java目录,并在java目录下创建类HelloMaven.java文件,文件内容如下:
public class HelloMaven{
public static void main(String[] args){
System.out.println("Hello Maven");
}
}
3、使用Maven命令编译java文件
第一步:进入到项目的根目录下,按住Shift键然后右键单击,选择在此处打开命令窗口
第二步:输入mvn compile编译该项目中的java文件
注:从Maven中心仓库下载jar包时,由于是国外网站,可能会下载比较慢或者下载失败,可以重新打开命令窗口执行mvn compile命令
第三步:看到BUILD SUCCESS代表编译成功
4、查看根目录,多出一个target目录,这就是约定的存放class文件的目录
5、使用mvn clean清除编译的class文件
执行完mvn clean命令,根目录下的target目录就会被删除了
三、常用的Maven命令,可以自己测试一下
▶ 基本命令
1、mvn -v 测试maven环境是否搭建成功
2、mvn compile 编译src/main/java目录下的类文件,生成src的同级目录target,其子目录classes放的是编译成功生成的class文件
3、mvn clean 删除target目录
4、mvn test 使用junit进行单元测试,并在target目录中生成test-classes文件夹,用来存放编译成功的测试类的class文件
5、mvn package 项目打包,会在target文件夹中增加一个本项目的jar包
6、mvn install 项目安装,就是把打包好的项目jar包安装到存放jar包的repository中,默认的本地路径为 ${user.home}/.m2/repository
▶ 组合命令
1、mvn clean compile 先清理再编译
2、mvn clean test 先清理再测试
3、mvn clean package 先清理再打包
4、mvn clean install 先清理再安装
四、修改从Maven中心仓库下载的jar包默认存储的位置(也就是本地仓库)
从Maven中心仓库下载到本地的jar包的默认存放在${user.home}/.m2/repository中,${user.home}表示当前登录系统的用户目录(如C:\Users\Alexs),如下图所示:
如果我们不喜欢将下载的jar包放在这个位置的话,我们可以自定义本地仓库的存储位置,可以按以下步骤操作
1、找到Maven的配置文件settings.xml(在你解压的Maven目录下的conf目录中)
2、打开配置文件,找到如下图所示的位置
3、先在其他盘创建一个仓库目录,然后修改配置文件,将默认路径修改为你创建的目录路径,如下图所示:
保存,OK,修改成功!