Maven是一个Java项目管理和构建工具,它可以定义项目结构、项目依赖,并使用统一的方式进行自动化构建,是Java项目不可缺少的工具。可以管理项目的整个声明周期,包括清除、编译,测试,报告、打包、部署等等。
Maven是专门为Java项目打造的管理和构建工具,它的主要功能有:
Maven项目结构
一个使用Maven管理的普通的Java项目,它的目录结构默认如下:
1 2 3 4 5 6 7 8 9 10 a-maven-project ├── pom.xml ├── src │ ├── main │ │ ├── java │ │ └── resources │ └── test │ ├── java │ └── resources └── target
项目的根目录a-maven-project是项目名,它有一个项目描述文件pom.xml,存放Java源码的目录是src/main/java,存放资源文件的目录是src/main/resources,存放测试源码的目录是src/test/java,存放测试资源的目录是src/test/resources,最后,所有编译、打包生成的文件都放在target目录里。这些就是一个Maven项目的标准目录结构。
我们再来看最关键的一个项目描述文件pom.xml,它的内容长得像下面:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <project ... > <modelVersion > 4.0.0</modelVersion > <groupId > com.itranswarp.learnjava</groupId > <artifactId > hello</artifactId > <version > 1.0</version > <packaging > jar</packaging > <properties > ... </properties > <dependencies > <dependency > <groupId > commons-logging</groupId > <artifactId > commons-logging</artifactId > <version > 1.2</version > </dependency > </dependencies > </project >
其中,groupId类似于Java的包名,通常是公司或组织名称,artifactId类似于Java的类名,通常是项目名称,再加上version,一个Maven工程就是由groupId,artifactId和version作为唯一标识。我们在引用其他第三方库的时候,也是通过这3个变量确定。例如,依赖commons-logging:
Maven配置
Maven 安装
以Windows为例,其他系统安装可以参考菜鸟教程
**第一步:**进入官网下载 或者直接去清华镜像下载
不同平台下载对应的包:Windows下选择Binary zip archive下载
**第二步:**解压压缩包,然后设置环境变量
新建系统变量 MAVEN_HOME ,变量值:为解压后目录的绝对地址
编辑系统变量 Path ,新建变量值:%MAVEN_HOME%\bin
**第三步:**在控制台输入mvn -v,如果能看到 Maven 相关版本信息,则说明 Maven 已经安装成功:
1 2 3 4 5 Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven home: D:\Apache-Maven-3.6.3\bin\.. Java version: 13.0.1, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk-13.0.1 Default locale: zh_CN, platform encoding: GBK OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
Maven镜像
中国区用户可以使用阿里云提供的Maven镜像仓库 。使用Maven镜像仓库需要一个配置,在安装目录下进入conf目录,settings.xml配置文件,找到 <mirrors>如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 <mirrors > <mirror > <id > aliyunmaven</id > <mirrorOf > *</mirrorOf > <name > 阿里云公共仓库</name > <url > https://maven.aliyun.com/repository/public</url > </mirror > </mirrors >
设置本地库
继续在settings.xml文件中找到<localRepository>中间填入本地库
IDEA中配置Maven
注意For current project 仅对当前项目有效
如果想要对所有项目生效需要在欢迎页 进行上述设置
自动下载变化后的依赖
有关概念
仓库
本地仓库
Maven会把我们项目所构建出来的jar包等等资源存放在本地仓库中。当我们需要jar包的时候,Maven第一时间也是去本地仓库中寻找jar包
中心仓库
当Maven在本地仓库和私服找不到我们需要的jar包的时候,就去中心仓库中帮我们下载对应的jar包。
私有服务器
存储一些jar包的服务器,由于本地仓库不可能拥有大部分的jar包,一个团队要去开发,免不了总是去中心仓库下载,这就非常耗费时间了。
maven软件构建的生命周期
清除–> 编译–>测试–>报告–>打包(jar\war)–>安装–>部署
maven坐标
坐标的组成: groupId + artifactId+ version
groupId:组id ,机构名,公司名:好比公司的id,或者是公司包名
artifactId:构建物id ,产品名或者产品的id
version :版本号
Alibaba——▶支付宝——▶5.01版本
jar包组成:artifactId-version.jar
pom.xml
pom.xml介绍:project object model 项目对象模型 ,它是maven核心配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 <?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 > top.whl123456</groupId > <artifactId > JavaWeb</artifactId > <version > 1.0-SNAPSHOT</version > <packaging > war</packaging > <name > JavaWeb Maven Webapp</name > <url > http://www.example.com</url > <properties > <project.build.sourceEncoding > UTF-8</project.build.sourceEncoding > <maven.compiler.source > 1.7</maven.compiler.source > <maven.compiler.target > 1.7</maven.compiler.target > </properties > <dependencies > <dependency > <groupId > junit</groupId > <artifactId > junit</artifactId > <version > 4.11</version > </dependency > </dependencies > <build > <finalName > JavaWeb</finalName > <pluginManagement > <plugins > <plugin > <artifactId > maven-clean-plugin</artifactId > <version > 3.1.0</version > </plugin > <plugin > <artifactId > maven-resources-plugin</artifactId > <version > 3.0.2</version > </plugin > <plugin > <artifactId > maven-compiler-plugin</artifactId > <version > 3.8.0</version > </plugin > <plugin > <artifactId > maven-surefire-plugin</artifactId > <version > 2.22.1</version > </plugin > <plugin > <artifactId > maven-war-plugin</artifactId > <version > 3.2.2</version > </plugin > <plugin > <artifactId > maven-install-plugin</artifactId > <version > 2.5.2</version > </plugin > <plugin > <artifactId > maven-deploy-plugin</artifactId > <version > 2.8.2</version > </plugin > </plugins > </pluginManagement > <resources > <resource > <directory > src/main/resources</directory > <includes > <include > **/*.properties</include > <include > **/*.xml</include > </includes > <filtering > true</filtering > </resource > <resource > <directory > src/main/java</directory > <includes > <include > **/*.properties</include > <include > **/*.xml</include > </includes > <filtering > true</filtering > </resource > </resources > </build > </project >