#文章目录
1.Maven简介
1.1 Maven是什么
1.2 Maven的作用
2.Maven环境搭建
3.Maven基础概念
3.1 仓库
3.2 坐标
3.3 仓库配置
4.Maven项目搭建
4.1 手动搭建maven项目
4.2 IDEA工具搭建maven项目
4.2.1 不使用原型创建项目
4.2.2 使用原型创建项目
5.Maven依赖管理
5.1 依赖配置与依赖传递
5.2 依赖范围
6.Maven生命周期与插件
6.1 生命周期
6.2 插件
1.Maven简介
1.1 Maven是什么
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven是用Java语言编写的。他管理的东西统统以面向对象的形式进行设计,最终他把一个项目看成一个对象,而这个对象叫做POM(project object model),即项目对象模型:
1.2 Maven的作用
Maven的作用我们可以分成三类:
(1)项目构建:提供标准的,跨平台的自动化构建项目的方式;
(2)依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突等问题;
(3)统一开发结构:提供标准的,统一的项目开发结构。
2.Maven环境搭建
链接:https://blog.csdn.net/u013131716/article/details/100712817
3.Maven基础概念
3.1 仓库
仓库:用于存储资源,主要是各种jar包
仓库有三种,分别为:本地仓库,私服,中央仓库,其中私服和中央仓库都属于远程仓库
中央仓库:maven团队自身维护的仓库,属于开源的;
私服:各公司/部门等小范围内存储资源的仓库,私服也可以从中央仓库获取资源;
本地仓库:开发者自己电脑上存储资源的仓库,也可从远程仓库获取资源。
简述私服的作用:
(1)保存具有版权的资源,包含购买或自主研发的jar;
(2)一定范围内共享资源,能做到仅对内不对外开放。
3.2 坐标
maven中的坐标用于描述仓库中资源的位置。
作用:使用唯一标识,唯一性定义资源位置,通过该标识可以将资源的识别与下载工作交由工具自动完成。
maven坐标的主要组成如下:
groupId:定义当前资源隶属组织名称(通常是域名反写,如:org.mybatis;com.xxx)
artifactId:定义当前资源的名称(通常是项目或模块名称,如:crm,sms)
version:定义当前资源的版本号
packaging:定义资源的打包方式,取值一般有如下三种
(1)jar:该资源打成jar包,默认是jar
(2)war:该资源打成war包
(3)pom:该资源是一个父资源(表明使用maven分模块管理),打包时只生成一个pom.xml不生成jar或其他包结构
如果要查询maven某一个资源的坐标,我们通常可以去maven的仓库进行查询,https://mvnrepository.com/,在该网站中可直接搜索想要的资源,然后就能得到该资源的坐标:
3.3 仓库配置
在maven的配置文件conf/settings.xml中可以找到它的说明:
镜像:mirrors
作用:加速下载
国内建议使用阿里云的镜像
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
本地仓库:
默认的本地仓库仓库位置在C:\Users\zs.m2\repository;(不建议使用,原因:开发项目所有的资源会比较多,文件使用空间较大)
可以自己来指定一个位置作为本地仓库的位置,这个指定同样是需要来修改maven的配置文件conf/settings.xml。
建立一个本地仓库:localRepository
<localRepository>D:\maven-repo</localRepository>
4.Maven项目搭建
4.1 手动搭建maven项目
我们先使用手动的方式来创建maven项目
(1)在D盘下创建目录mvnproject并进入该目录,作为我们的操作目
(2)创建我们的maven项目,创建一个目录project-java作为我们的项目文件夹,并进入到该目录
(3)创建java代码(源代码)所在目录,即创建src/main/java
(4)创建配置文件所在目录,即创建src/main/resources
(5)创建测试源代码所在目录,即创建src/test/java
(6)创建测试存放配置文件存放目录,即src/test/resources
(7)在src/main/java中创建一个包(注意在windos文件夹下就是创建目录)com/xxx,在该目录下创建Demo.java文件,作为演示所需java程序,内容如下:
package com.xxx;
public class Demo{
public String say(String name){
System.out.println("hello "+name);
return "hello "+name;
}
}
(8)在src/test/java中创建一个测试包(目录)com/xxx,在该包下创建测试程序DemoTest.java
package com.xxx;
import org.junit.*;
public class DemoTest{
@Test
public void testSay(){
Demo d = new Demo();
String ret = d.say("maven");
Assert.assertEquals("hello maven",ret);
}
}
(9)在project-java/src下创建pom.xml文件,编辑如下
<?xml version="1.0" encoding="UTF-8"?>
<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.xxx</groupId>
<artifactId>project-java</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
通过前面的操作,我们已经搭建好了maven的项目结构,下面要通过maven来构建我们的项目
maven的构建命令以mvn开头,后面添加功能参数,可以一次性执行多个命令,用空格分离
mvn compile:编译
mvn clean:清理
mvn test:测试
mvn package:打包
mvn install:安装到本地仓库
下面我们来进行操作:
(1)在项目project-java所在的DOS命令窗口下执行mvn compile进行源码编译,当然首次执行需要先下载相关插件
编辑结果如下:
编译完成后在项目project-java下多了一个目录target,在这个目录下就存放的是maven编译好的一些东西
我们可以进入到target目录查看
其中生成的classes目录就是编译好的字节码文件
(2)当然如果我们想清理掉这些东西,我们只需执行mvn clean命令即可,清理掉后target目录也就消失了
(3)如果我们要执行测试包中的测试程序,我们只需执行mvn test命令即可
此时在看target目录会多一些东西
其中产生的test-classes就是测试代码的字节码文件,surefire-reports是它产生的测试报告
(4)使用mvn package命令进行打包,如下
在生成的target目录中可以看到打包的结果
当然,如果仔细看DOS窗口输出的我们会发现,mvn package命令的时候maven会把前面两个命令mvn compile,mvn test都执行一遍
(5)使用mvn install命令进行安装,将项目打好的包存入本地仓库
仔细查看输出会发现mvn install命令执行的时候也会将前面的命令都执行一遍
此时我们可以去本地仓库中查找,如何查找?这个很重要
maven是按照groupId/artifactId/version的结构在本地仓库进行存储
前面我们是通过手动的方式创建的maven项目,相对来说比较的麻烦,maven本身也是这样觉得的,因此maven本身就给我们提供了相关的插件来帮助我们快速构建项目,当然这是一些命令:
这些命令不用记,因为实际操作的时候也用不着,因为实际开发的时候我们基本都是用过一些IDE工具来进行项目开发,这些IDE工具基本都集成了Maven,我们操作起来非常简单。
4.2 IDEA工具搭建maven项目
前面学习的基本都是通过命令来构建和管理项目,但是这在实际开发过程中基本不常用,常用的是通过相关IDE工具来进行项目的构建和管理,因此我们使用IDEA工具进行maven项目的搭建,需要注意的是:Maven和IDEA在版本上存在一些兼容性问题,因为要合理的选择Maven和IDEA的版本,本课程中提供安装maven-3.6.1版本是可用的.
4.2.1 不使用原型创建项目
(1)在IDEA中配置Maven
(2)创建maven工程
(3)填写本项目的坐标
(4)查看各目录颜色标记是否正确
(5)IDEA右侧有一个maven管理界面,可点开查看
(6)在项目的pom.xml文件中添加项目资源依赖
junit
junit
4.12
(7)创建源代码:com.xxx.Demo
package com.xxx;
/**
- Created by XXX.
*/
public class Demo{
public String say(String name){
System.out.println("hello "+name);
return "hello "+name;
}
}
(8)创建测试代码:com.xxx.DemoTest
package com.xxx;
import org.junit.Assert;
import org.junit.Test;
/**
-
Created by XXX
*/
public class DemoTest{@Test
public void testSay(){
Demo d = new Demo();
String ret = d.say(“maven”);
Assert.assertEquals(“hello maven”,ret);
}
}
然后可以进行测试运行
运行的时候可以编辑运行模板:
4.2.2 使用原型创建项目
首先我们来看普通的java工程如何创建:
(1)创建maven项目的时候选择使用原型骨架
(2)创建完成后发现通过这种方式缺少一些目录,如下图
我们需要手动去补全目录,并且要对补全的目录进行标记,切记
然后我们在来看web工程如何创建:
(1)选择web对应的原型骨架