Maven 是什么、安装 Maven、Maven 的配置 & 使用等
# Maven 是什么
Maven 是一个项目构建工具,现代软件开发都是一个个工程项目,软件项目的同步与管理的高昂成本催生出 Maven 这样的构建工具
Maven 能避免:
- 频繁、手动的下载导入 jar 包
- 不同构建 / 运行环境(Windows/Linux)带来的产物不一致问题
- 不同版本的依赖所产生的冲突问题
与 Maven 类似的还有 Gradle,Maven 使用 XML 作为配置文件,Gradle 使用 DSL 语法书写配置文件,简化了 XML 的繁琐配置
# 安装 Maven
Maven 的官方下载地址:https://maven.apache.org/download.cgi
Maven 是绿色软件,解压后即可使用,唯一需要配置的是两个系统环境变量:
- MAVEN_HOME - Maven 的安装目录
- PATH - 在 PATH 中加上 % MAVEN_HOME%bin,方便直接在命令行调用 mvn 命令
# Maven 的配置 & 使用
# Maven 的配置
# %MAVEN_HOME%confsettings.xml
这个文件存放的是 Maven 的全局配置信息,对这个文件做的所有更改都会直接应用于所有使用该 maven 构建的项目
配置文件格式大体如下:
代码语言:javascript复制<!-- setting 头,指定了这个文件的 xml 格式 -->
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
<localRepository></localRepository>
<mirrors></mirrors>
<!-- 其他的标签省略 -->
</settings>
localRepository 标签:
用于指定本地仓库的文件夹路径,从远程仓库下载的所有文件都会放在这个文件夹下
mirrors 标签
用于指定镜像仓库,配置格式如下
代码语言:javascript复制<mirrors>
<!-- 阿里云仓库 -->
<mirror>
<id>alimaven</id>
<mirrorOf>*</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<!-- 腾讯云仓库 -->
<mirror>
<id>nexus-tencentyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus tencentyun</name>
<url>http://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
</mirror>
<!-- 中央仓库 1 -->
<mirror>
<id>repo1</id>
<mirrorOf>central</mirrorOf>
<name>Central Repo1</name>
<url>https://repo1.maven.org/maven2/</url>
</mirror>
<!-- 中央仓库 2 -->
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Central Repo2</name>
<url>https://repo2.maven.org/maven2/</url>
</mirror>
</mirrors>
# <你的 Maven 项目>pom.xml
代码语言:javascript复制<?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.tagbug</groupId>
<!-- 项目名 -->
<artifactId>learn-maven</artifactId>
<!-- 项目版本号 -SNAPSHOT 为开发版 -->
<version>1.0-SNAPSHOT</version>
<!-- 打包方式 jar->jar 包 war->war 包 -->
<packaging>jar</packaging>
<!-- 项目依赖 可以从 https://mvnrepository.com/ 搜索 -->
<dependencies></dependencies>
<!-- 若干配置项... -->
</project>
当你的系统装有多个 jdk 时,maven 会不知道使用哪个,从而产生报错,所以你可以在全局 / 项目配置文件下指定:
代码语言:javascript复制<properties>
<!-- 指定默认字符编码集 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 指定使用的 jdk 版本 -->
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
当你的项目有 xml 配置文件和 java 文件写在同一目录下时,可能需要额外配置:
代码语言:javascript复制<build>
<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>
# Maven 的使用
- mvn compile 编译项目
- mvn clean 清除构建的项目
- mvn test 运行测试
- mvn package 构建项目 & 打包项目
- mvn install 将项目安装到本地仓库
maven 拥有构建的生命周期,当运行位于生命周期下游的命令时,会先执行位于上游的命令,如下图所示
# Maven 的其他知识点
- 生命周期插件
- 依赖传递 & 解决依赖冲突
- Maven 高级
- 等等…