Maven简单总结

2023-03-16 11:55:35 浏览数 (1)

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 是绿色软件,解压后即可使用,唯一需要配置的是两个系统环境变量:

  1. MAVEN_HOME - Maven 的安装目录
  2. 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 高级
  • 等等…

0 人点赞