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%\conf\settings.xml
这个文件存放的是 Maven 的全局配置信息,对这个文件做的所有更改都会直接应用于所有使用该 maven 构建的项目
配置文件格式大体如下:
<!-- 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 标签
用于指定镜像仓库,配置格式如下
<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
<?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 会不知道使用哪个,从而产生报错,所以你可以在全局 / 项目配置文件下指定:
<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 文件写在同一目录下时,可能需要额外配置:
<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 高级
- 等等…