Maven
基本介绍
Mvn介绍
Maven:本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
POM:Project Object Model 项目对象模型。Maven 是用 Java 语言编写的,管理的东西以面向对象的形式进行设计,最终把一个项目看成一个对象,这个对象叫做 POM
pom.xml:Maven 需要一个 pom.xml 文件,Maven 通过加载这个配置文件可以知道项目的相关信息,这个文件代表就一个项目。如果做 8 个项目,对应的是 8 个 pom.xml 文件
依赖管理:Maven 对项目所有依赖资源的一种管理,它和项目之间是一种双向关系,即做项目时可以管理所需要的其他资源,当其他项目需要依赖我们项目时,Maven 也会把我们的项目当作一种资源去进行管理。
管理资源的存储位置:本地仓库,私服,中央仓库
基本作用:
-
项目构建:提供标准的,跨平台的自动化构建项目的方式
-
依赖管理:方便快捷的管理项目依赖的资源(jar 包),避免资源间的版本冲突等问题
-
统一开发结构:提供标准的,统一的项目开发结构
各目录存放资源类型说明:
-
src/main/java:项目 java 源码
-
src/main/resources:项目的相关配置文件(比如 mybatis 配置,xml 映射配置,自定义配置文件等)
-
src/main/webapp:web 资源(比如 html、css、js 等)
-
src/test/java:测试代码
-
src/test/resources:测试相关配置文件
-
src/pom.xml:项目 pom 文件
参考视频:https://www.bilibili.com/video/BV1Ah411S7ZE
基础概念
仓库:用于存储资源,主要是各种 jar 包。有本地仓库,私服,中央仓库,私服和中央仓库都是远程仓库
-
中央仓库:Maven 团队自身维护的仓库,属于开源的
-
私服:各公司/部门等小范围内存储资源的仓库,私服也可以从中央仓库获取资源,作用:
- 保存具有版权的资源,包含购买或自主研发的 jar
- 一定范围内共享资源,能做到仅对内不对外开放
-
本地仓库:开发者自己电脑上存储资源的仓库,也可从远程仓库获取资源
坐标:Maven 中的坐标用于描述仓库中资源的位置
-
作用:使用唯一标识,唯一性定义资源位置,通过该标识可以将资源的识别与下载工作交由机器完成
https://mvnrepository.com
:查询 maven 某一个资源的坐标,输入资源名称进行检索
-
依赖设置:
- groupId:定义当前资源隶属组织名称(通常是域名反写,如:org.mybatis)
-
artifactId:定义当前资源的名称(通常是项目或模块名称,如:crm、sms)
- version:定义当前资源的版本号
-
packaging:定义资源的打包方式,取值一般有如下三种
-
jar:该资源打成 jar 包,默认是 jar
-
war:该资源打成 war 包
-
pom:该资源是一个父资源(表明使用 Maven 分模块管理),打包时只生成一个 pom.xml 不生成 jar 或其他包结构
-
环境搭建
环境配置
Maven 的官网:http://maven.apache.org/
下载安装:Maven 是一个绿色软件,解压即安装
目录结构:
- bin:可执行程序目录
- boot:Maven 自身的启动加载器
- conf:Maven 配置文件的存放目录
- lib:Maven运行所需库的存放目录
配置 MAVEN_HOME:
Path 下配置:%MAVEN_HOME%\bin
环境变量配置好之后需要测试环境配置结果,在 DOS 命令窗口下输入以下命令查看输出:mvn -v
仓库配置
默认情况 Maven 本地仓库在系统用户目录下的 .m2/repository
,修改 Maven 的配置文件 conf/settings.xml
来修改仓库位置
-
修改本地仓库位置:找到
标签,修改默认值 <!-- localRepository
| The path to the local repository maven will use to store artifacts.
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>E:\Workspace\Java\Project\.m2\repository</localRepository>注意:在仓库的同级目录即
.m2
也应该包含一个settings.xml
配置文件,局部用户配置优先与全局配置- 全局 setting 定义了 Maven 的公共配置
- 用户 setting 定义了当前用户的配置
-
修改远程仓库:在配置文件中找到
<mirrors>
标签,在这组标签下添加国内镜像<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf> <!--必须是central-->
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror> -
修改默认 JDK:在配置文件中找到
<profiles>
标签,添加配置<profile>
<id>jdk-10</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>10</jdk>
</activation>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>10</maven.compiler.source>
<maven.compiler.target>10</maven.compiler.target>
</properties>
</profile>
项目搭建
手动搭建
-
在 E 盘下创建目录 mvnproject 进入该目录,作为我们的操作目录
-
创建我们的 Maven 项目,创建一个目录
project-java
作为我们的项目文件夹,并进入到该目录 -
创建 Java 代码(源代码)所在目录,即创建
src/main/java
-
创建配置文件所在目录,即创建
src/main/resources
-
创建测试源代码所在目录,即创建
src/test/java
-
创建测试存放配置文件存放目录,即
src/test/resources
-
在
src/main/java
中创建一个包(注意在 Windos 文件夹下就是创建目录)demo
,在该目录下创建Demo.java
文件,作为演示所需 Java 程序,内容如下package demo;
public class Demo{
public String say(String name){
System.out.println("hello "+name);
return "hello "+name;
}
} -
在
src/test/java
中创建一个测试包(目录)demo
,在该包下创建测试程序DemoTest.java
package demo;
import org.junit.*;
public class DemoTest{
@Test
public void testSay(){
Demo d = new Demo();
String ret = d.say("maven");
Assert.assertEquals("hello maven",ret);
}
} -
在
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">
<!--指定pom的模型版本-->
<modelVersion>4.0.0</modelVersion>
<!--打包方式,web工程打包为war,java工程打包为jar -->
<packaging>jar</packaging>
<!--组织id-->
<groupId>demo</groupId>
<!--项目id-->
<artifactId>project-java</artifactId>
<!--版本号:release,snapshot-->
<version>1.0</version>
<!--设置当前工程的所有依赖-->
<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
:安装到本地仓库
注意:执行某一条命令,则会把前面所有的都执行一遍
IDEA搭建
不用原型
-
在 IDEA 中配置 Maven,选择 maven3.6.1 防止依赖问题
-
创建 Maven,New Module → Maven → 不选中 Create from archetype
-
填写项目的坐标
- GroupId:demo
- ArtifactId:project-java
-
查看各目录颜色标记是否正确
-
IDEA 右侧侧栏有 Maven Project,打开后有 Lifecycle 生命周期
-
自定义 Maven 命令:Run → Edit Configurations → 左上角 + → Maven