Maven简介
Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。
在多个开发团队一起工作时,Maven可以按照标准设置在非常短的时间里完成配置工作。由于大部分项目的设置都很简单,并且可以重复使用,Maven让开发人员的工作更轻松,同事创建报表、检查、构建和测试自动化设置。
Maven提供的管理有:
- Builds
- Documentation
- Reporting
- Dependecies
- SCMs
- Release
- Distribution
- mailing list
Maven简化和标准化项目的建设过程。处理编译、分配、文档、团队协作和其他任务的无缝连接。Maven增加可重用性并建立相关性任务。
标准化的目录结构:Maven的项目目录结构是固定的,和具体的开发环境无关(eclipse和idea有自己的默认项目目录结构)。
Maven安装
在Windows安装时,需要下载Maven的zip文件,并解压到想要的目录中。
安装要求
必须配置好JavaSDK的路径,和Java_HOME环境变量。
在Path中添加Maven的bin目录。
Maven配置
配置文件
Maven的默认配置文件在Maven目录下的conf/settings.xml
,参照该文件可以定制、修改Maven的配置。把自定义好的settings.xml
文件拷贝到用户\administrator\.m2\
目录下,idea会自动检测配置文件的变化,加载Maven配置。
- idea中可以修改
settings.xml
的保存位置,而不是必须在用户\administrator\.m2\
目录下。
本地仓库
本地仓库的作用是保持Maven下载的依赖包。
配置文件中的<localRepository>/path/to/local/repo</localRepository>
,中的路径就是手动设置的本地仓库路径,如果不设置,默认是在用户\administrator.m2\repository\
目录。
- idea中可以修改本地仓库的保存位置,而不是必须在
用户\administrator\.m2\repository\
目录下。
中央仓库
当建立Maven项目时,Maven会检查项目的pom.xml文件,以确定下载哪些依赖。首先,Maven从本地仓库查找资源,如果没有找到,就会从默认的Maven在线中央仓库下载。
设置仓库源
在配置文件中,可以修改中央仓库的源,从而加快依赖包的下载速度。配置如下:
<settings>
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
settings节点是配置文件的根节点
设置Maven项目默认的编译环境
<profile>
<id>jdk-12</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>12</jdk>
</activation>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>12</maven.compiler.source>
<maven.compiler.target>12</maven.compiler.target>
</properties>
</profile>
添加包依赖
首先,在Maven在线仓库查找需要的包。然后把包信息添加pom.xml文件中,如下:
<dependecies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifectId>
<version>1.2.17</version>
</dependency>
</dependecies>
Maven POM
POM是Maven和项目之间的中间件。
基本结构:
<?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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bailiang</groupId>
<artifactId>hello-maven</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>war</packaging>
</project>
说明
节点 | 描述
-|-
groupId | 项目组的编号,在组织或项目中通常是唯一的,和Java包名命名规则相同
artifactId | 项目的编号,通常是项目名称。定义了artifact在存储库中的位置
version | 项目的版本号
packaging | 项目发布时的打包方式,war或jar
说明
- 快照版:必须使用
X.Y.Z-SNAPSHOT
的格式,如果依赖的是快照版,则刷新Maven时,会自动下载最新的代码;如果没有-SNAPSHOT
,而是任何其他字符,都是发行版,发行版需要手动修改版本号来加载最新代码。 - 语义化版本规范: a.b.c
c 每修复一个bug,数值增1
b 功能每增加、删除、修改一个,数值增1
a 工程的架构发生重大变化,比如核心库更换、核心功能重写等,数值增1 - 如果想要快照版自动更新最新代码,必须设置Maven的
Always update snapshots
,如下图
通用目录结构
{myproject}
---->[src]
|--->[main]
|--->[java] 存放所有源码
|--->[resources] 存放资源文件,如xml配置文件
|--->[webapp] 存放web文件,如jsp
|--->[test]
|--->[java] 测试
---->pom.xml Maven项目配置文件
web项目的目录结构
{myproject}
---->[src]
|--->[main]
|--->[java] 存放所有源码
|--->各个package
|--->[resources] 存放资源文件,如xml配置文件
|--->spring-context.xml
|--->spring-mvc.xml
|--->其他配置文件
|--->[webapp] 存放web文件,如jsp
|--->[WEB-INF]
|--->web.xml web配置文件
|--->index.jsp 首页
|--->[test]
|--->[java] 测试
---->pom.xml Maven项目配置文件
常用命令
如果PC中没有开发环境,也可以用Maven的命令行打包发布工程
命令行:mvn cmd
- clean 清理项目
- package 打包项目(包含编译过程)