自学内容网 自学内容网

六:java 基础知识(6)-- Maven项目管理

目录

1. 引言

1.1 什么是 Maven

1.2 Maven 的优势

2. Maven 基础

2.1 Maven 的基本概念

2.2 Maven 的工作原理

2.3 Maven 的安装与配置

3. Maven 项目结构

3.1 Maven 项目的标准目录结构

3.2 POM 文件(pom.xml)概述

3.3 POM 文件的基本配置

4. Maven 依赖管理

4.1 添加依赖

4.2 依赖范围

5. Maven 插件

5.1 常用 Maven 插件介绍

5.2 自定义插件配置

5.3 插件的生命周期

6. Maven 构建生命周期

6.1 构建生命周期概述

6.2 常用生命周期阶段

        

7. Maven 资源管理

7.1 资源文件的管理

7.2 资源过滤

7.3 处理静态文件


1. 引言

1.1 什么是 Maven

        Maven 是一个强大的项目管理和构建自动化工具,主要用于 Java 项目。它提供了一种标准化的方法来管理项目的构建过程、依赖关系、文档生成等。Maven 的核心是一个配置文件 pom.xml(Project Object Model),通过这个文件,开发人员可以定义项目的基本信息、依赖库、构建配置以及插件等。

Maven 的主要特点包括:

  • 依赖管理:自动下载和管理项目所需的库和框架。
  • 项目构建:通过预定义的生命周期和阶段简化构建过程。
  • 可扩展性:通过插件机制,可以灵活扩展和定制项目的构建流程。
  • 标准化:提供了统一的项目结构,使得多个项目之间的管理更加规范和一致。
1.2 Maven 的优势
  • 简化依赖管理

    • Maven 能够自动下载和管理项目所需的所有依赖库,无需手动处理 jar 包的下载和配置。
  • 一致的项目结构

    • Maven 强制遵循标准的项目目录结构,降低了新开发人员的学习曲线,使项目更易于理解和维护。
  • 快速构建和部署

    • 通过定义构建生命周期,Maven 能够快速、自动地构建项目并生成可部署的 artifact(如 JAR、WAR 等)。
  • 强大的插件生态系统

    • Maven 拥有丰富的插件支持,可以满足项目构建、测试、报告等多种需求,增强了项目的可扩展性。
  • 跨平台支持

    • Maven 是基于 Java 开发的,能够在不同操作系统上运行,并保证在各种环境中的一致性。
  • 集成持续集成工具

    • Maven 可与 Jenkins、Travis CI 等持续集成工具无缝集成,支持自动化构建和部署,提高开发效率。

2. Maven 基础

2.1 Maven 的基本概念
  • 项目对象模型(POM):Maven 使用 pom.xml 文件来描述项目的基本信息、依赖、插件及构建配置。POM 是 Maven 的核心,所有的构建和依赖管理都依赖于此。

  • 依赖:项目所需的库和框架。Maven 能够自动下载并管理这些依赖,通过声明在 pom.xml 中来进行管理。

  • 构建生命周期:Maven 定义了一系列的构建阶段(如 compiletestpackageinstalldeploy),每个阶段对应一个具体的构建任务。

  • 插件:Maven 的功能通过插件扩展,插件用于执行特定的任务,比如编译代码、运行测试、生成文档等。

2.2 Maven 的工作原理
  • 项目配置:开发人员在 pom.xml 中定义项目的基本信息,包括项目名称、版本、依赖、构建插件等。

  • 依赖解析:当构建项目时,Maven 会解析 pom.xml 中定义的依赖,自动下载所需的库和框架,这些依赖存储在本地 Maven 仓库中。

  • 执行构建生命周期

    • Maven 拥有多个构建生命周期,每个生命周期由多个阶段组成。
    • 当执行一个 Maven 命令时,Maven 会依次执行该生命周期中的各个阶段,直到到达指定的目标。例如,执行 mvn install 时,会依次执行 validatecompiletestpackageinstall 阶段。
  • 生成输出:经过构建的输出可以是 JAR、WAR 等可部署的文件,这些文件会被存放在目标目录中。

  • 报告与文档生成:Maven 还能够生成项目的报告和文档,便于开发人员和团队理解项目结构和状态。

2.3 Maven 的安装与配置

        Maven 需要 Java 环境支持,请确保已经安装了 JDK,并且环境变量 JAVA_HOME 已正确设置。

        Maven 下载

        通过网盘分享的文件:apache-maven-3.9.8-bin.zip
链接: https://pan.baidu.com/s/1McM_usmU_mwjmJuJlOEJXw?pwd=swc8 提取码: swc8 

        解压 Maven:将下载的压缩包解压到本地目录

        设置环境变量:将 Maven 的 bin 目录添加到系统的 PATH 环境变量中(不加也行)

        settings.xml 是 Maven 的配置文件,用于定义用户级的全局设置。它通常位于 Maven 安装目录下的 conf 文件夹中

<?xml version="1.0" encoding="UTF-8"?>
<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>D:\Tool\Develop\MAVENHOME\apache-maven-3.9.9-bin-jdk8\mavenwarehouse</localRepository>
  <mirrors>
  <!-- 配置阿里云镜像仓库 -->
    <mirror>
      <id>alimaven</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
    </mirror>
    <mirror>
      <id>maven-default-http-blocker</id>
      <mirrorOf>external:http:*</mirrorOf>
      <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
      <url>http://0.0.0.0/</url>
      <blocked>true</blocked>
    </mirror>
  </mirrors>
  <profiles>
<profile>
      <id>jdk-1.8</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
      </activation>
 
      <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
      </properties>
    </profile>
  </profiles>
</settings>

3. Maven 项目结构

3.1 Maven 项目的标准目录结构

Maven 定义了一种标准的项目目录结构,以便于管理和组织项目文件。以下是典型的 Maven 项目目录结构:


3.2 POM 文件(pom.xml)概述

        POM(Project Object Model)文件是 Maven 项目的核心配置文件,通常命名为 pom.xml。它以 XML 格式定义了项目的基本信息、依赖关系、构建配置等。POM 文件为 Maven 提供了项目的整体结构和管理信息。

POM 文件的基本元素

  • project: 根元素,所有其他元素都包含在此元素下。
  • modelVersion: POM 文件的版本。
  • groupId: 项目的唯一标识符,通常使用反向域名命名。
  • artifactId: 项目的名称,通常为项目的名字。
  • version: 项目的版本号。
  • packaging: 项目打包方式,常见的有 jarwar 等。
  • dependencies: 项目依赖的库和框架。

3.3 POM 文件的基本配置
<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.example</groupId>        <!-- 项目的组织ID -->
    <artifactId>my-maven-project</artifactId> <!-- 项目的名称 -->
    <version>1.0-SNAPSHOT</version>       <!-- 项目的版本 -->
    <packaging>jar</packaging>            <!-- 项目的打包类型 -->

    <name>My Maven Project</name>          <!-- 项目的显示名称 -->
    <description>A simple Maven project</description> <!-- 项目描述 -->

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.10</version> <!-- 项目依赖 -->
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>      <!-- 测试范围的依赖 -->
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>    <!-- Java 源代码版本 -->
                    <target>1.8</target>    <!-- Java 字节码版本 -->
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

4. Maven 依赖管理

4.1 添加依赖

在 Maven 项目中添加依赖是通过在 pom.xml 文件中的 <dependencies> 标签下定义依赖项。每个依赖项包含 groupIdartifactIdversion 三个基本信息。

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.3.10</version>
    </dependency>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>31.0.1-jre</version>
    </dependency>
</dependencies>

4.2 依赖范围

Maven 提供了多种依赖范围(scope),用于控制依赖的可用性和生命周期。常见的依赖范围包括:

  • compile: 默认范围,依赖会在编译、测试和运行时可用。
  • provided: 表示该依赖在编译时可用,但在运行时由容器提供(如 Servlet API)。
  • runtime: 表示该依赖在运行时可用,但在编译时不可用。
  • test: 该依赖只在测试时可用,不会被打包到最终的应用程序中。
  • system: 指定系统范围的依赖,要求提供该依赖的路径。
  • <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope> <!-- 仅在测试时可用 -->
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope> <!-- 由容器提供 -->
        </dependency>
    </dependencies>
    

5. Maven 插件

5.1 常用 Maven 插件介绍

5.2 自定义插件配置

5.3 插件的生命周期

6. Maven 构建生命周期

6.1 构建生命周期概述

Maven 的构建生命周期是指项目的构建、测试、打包、安装和部署等过程。Maven 通过定义一系列的生命周期和阶段,来简化项目管理,使得构建过程更加一致和可重复。主要有三种生命周期:

  1. default: 主要用于项目的构建,涉及编译、测试、打包等。
  2. clean: 用于清理项目,删除生成的文件。
  3. site: 用于生成项目的文档和站点。
6.2 常用生命周期阶段
  • validate

    • 功能: 验证项目的结构和所需的信息是否完整,确保所有必要的信息(如 POM 文件中的依赖和插件)都已准备好。
  • compile

    • 功能: 编译项目的源代码。源代码通常位于 src/main/java 目录,编译后的字节码会生成到 target/classes 目录。
  • test

    • 功能: 执行测试代码,通常位于 src/test/java 目录。使用测试框架(如 JUnit 或 TestNG)来运行单元测试,并确保编译后的代码的功能。
  • package

    • 功能: 将编译后的代码打包成可分发的格式,如 JAR、WAR 或 ZIP 文件。打包后的文件会生成在 target 目录中。
  • install

    • 功能: 将打包好的文件安装到本地 Maven 仓库中,以供其他项目依赖。通常用于将库项目提供给其他开发者使用。
  • deploy

    • 功能: 将最终的包复制到远程 Maven 仓库,以便与其他开发者或项目共享。通常在发布新版本时使用。
  • clean

    • 功能: 清理项目,删除生成的文件和目录,通常包括 target 目录。此生命周期的主要阶段是 clean
  • site

    • 功能: 生成项目的站点文档。包括项目的信息、报告和其他文档,通常在 target/site 目录下生成。
        

7. Maven 资源管理

7.1 资源文件的管理

        Maven 项目通常会包含一些非代码文件,如配置文件、图片、静态资源等。这些文件通常放在 src/main/resources 目录下。Maven 会自动将该目录中的资源文件复制到构建输出目录(target/classes),以便在运行时可以访问。

示例: 假设项目中有一个配置文件 config.properties,它位于 src/main/resources 目录中,Maven 在构建时会将其复制到 target/classes 目录。

7.2 资源过滤

        资源过滤是指在构建过程中对资源文件进行替换操作,比如将某些占位符替换为实际值。Maven 提供了资源过滤功能,可以在 POM 文件中配置。

示例: 假设有一个配置文件 config.properties,内容如下:

database.url=${db.url}
database.username=${db.username}
database.password=${db.password}

要启用资源过滤,可以在 POM 文件中进行如下配置:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering> <!-- 启用过滤 -->
        </resource>
    </resources>
</build>

接着,在 pom.xml 中定义属性:

<properties>
    <db.url>jdbc:mysql://localhost:3306/mydb</db.url>
    <db.username>user</db.username>
    <db.password>password</db.password>
</properties>

7.3 处理静态文件

Maven 还可以处理项目中的静态文件(如 HTML、CSS、JavaScript 等)。这些文件通常放在 src/main/webapp 目录下,Maven 会根据项目类型将其处理并复制到输出目录。

maven 插件 还可以做 代码质量管理  有兴趣的可以搜一搜吧 代码静态检查 代码覆盖率报告


原文地址:https://blog.csdn.net/pasaxiaorui/article/details/143486437

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!