JavaRush /Java 博客 /Random-ZH /第 4 部分:Maven 基础知识

第 4 部分:Maven 基础知识

已在 Random-ZH 群组中发布
本材料是“企业发展概论”系列的一部分。上一篇文章: 第 4 部分.Maven 基础知识 - 1Maven是一个管理和构建项目的工具——Java 程序员真正的助手。它使开发人员在各个工作阶段的工作变得更加轻松:从创建项目结构和连接必要的库到在服务器上部署产品。使用任何框架时,您都必须使用 Maven。那么今天我们就来看看它的主要功能,看看应该如何使用。

一步步安装Maven

  1. 首先,您需要从此链接下载安装 Maven 。

  2. 接下来,您需要解压下载的存档并将 M2_HOME 环境变量设置为指向解压存档位置的链接。例如,C:\Program Files\maven\

  3. 要检查所有内容是否已安装,请在命令行中写入:

    mvn 版本

  4. 如果显示了 Maven、Java 等版本信息,则说明您已准备就绪。

  5. 现在打开 IntelliJIDEA 并创建一个新项目。在第一个窗口中,选择 Maven:

    第 4 部分. Maven 基础知识 - 2
  6. 单击下一步并填写以下对话框:

    第 4 部分.Maven 基础知识 - 3
  7. 接下来,按照标准在所需位置创建一个项目。

    项目创建完成后,注意其结构:

    第 4 部分. Maven 基础知识 - 4
这是Maven 项目的标准结构
  • src/main/java文件夹包含 java 类;
  • src/main/resources中- 我们的应用程序使用的资源(HTML 页面、图片、样式表等);
  • src/test - 用于测试。
另请注意名为pom.xml的文件。这是管理 Maven 的主要文件。整个项目描述都包含在这里。目前还没有太多信息,但我们现在会添加它。

Maven 中的依赖管理

您可能遇到过“依赖关系管理器”或“依赖关系管理器”这个短语。Maven 可以做到这一切。感谢 Maven,您无需花费大量时间在 Internet 上搜索所需的库、下载它,然后将其连接到项目:只需将所需的库添加到 Maven 依赖项列表中即可。 依赖项写在依赖项 XML 节点中。 假设您的项目中需要 Apache Commons IO 库来简化文件处理。要添加库,请在 pom.xml 中写入五行:
<dependency>
   <groupId>commons-io</groupId>
   <artifactId>commons-io</artifactId>
   <version>2.6</version>
</dependency>
您的 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>example.com</groupId>
   <artifactId>example</artifactId>
   <version>1.0-SNAPSHOT</version>

   <dependencies>
       <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version>
       </dependency>
   </dependencies>
</project>
之后,允许 IntelliJ IDEA 导入依赖项(右下角应出现一个对话框)。现在该库可以使用了:
import org.apache.commons.io.FileUtils;

import java.io.File;

public class TestMaven {
   public static void main(String[] args) {
       File tempDirectory = FileUtils.getTempDirectory();
   }
}
所有后续依赖项也应写入 <dependencies> 标记内。您可能想知道:您如何知道需要在 <dependency> 标记内包含有关库的哪些信息?这里一切都很简单。在这种情况下,始终指定三个参数:groupId、artifactId 和 version。您可以通过两种方式找到这些参数:
  1. 在图书馆网站上。如果我们需要 Apache Commons IO,请访问官方网站并选择“依赖项信息”选项卡。所有必要的信息都在这里- 您只需复制它并将其添加到我们的依赖项部分。

  2. Maven 存储库中。在搜索中输入“apache commons io”,您将看到该库的所有可用版本。选择您需要的后,只需复制:

    <dependency>
               <groupId>commons-io</groupId>
               <artifactId>commons-io</artifactId>
               <version>2.6</version>
           </dependency>

    并添加到您的 pom.xml 中。

Maven 存储库的类型

值得再次提及 Maven 存储库,因为我们实际上在您的计算机上有两个存储库 -外部(全局)和本地。您添加到项目中的所有库都保存在本地存储库中。当Maven向项目添加所需的依赖项时,它首先检查本地存储库是否存在这样的库,只有在没有找到的情况下,它才会转向外部库。正如您所看到的,您可以使用 Maven 添加依赖项,但这并不是它的全部功能。

使用 Maven 构建 Java 项目

对于新手来说,这个功能可能看起来毫无意义。如果有 IDE 为什么还需要这个?但不是!首先,您必须在其上构建应用程序的服务器可能不仅没有开发环境,而且还没有图形界面。其次,在大型项目中,Maven 可以更好地处理组装项目的任务。因此,我们不要用等待来折磨自己,而是考虑一下使用 Maven 构建应用程序的过程。

阶段

构建应用程序的过程称为 Maven 项目的生命周期,它由阶段组成。你可以在IDEA中点击右上角的Maven>example>Lifecycle来查看它们: 第 4 部分. Maven 基础知识 - 5如你所见,有9个阶段:
  1. clean - 从目标目录(保存完成的工件的位置)中删除所有已编译的文件;
  2. 验证 - 检查所有信息是否可用于构建项目;
  3. 编译 - 编译带有源代码的文件;
  4. 测试——测试已启动;
  5. package——编译后的文件被打包(打成jar、war等档案);
  6. verify — 执行检查以确认打包文件是否准备就绪;
  7. install - 包被放置在本地存储库中。现在可以作为外部库被其他项目使用;
  8. 站点 - 创建项目文档;
  9. 部署 - 将收集的存档复制到远程存储库。
所有阶段都按顺序执行:在阶段 1-3 完成之前,您无法开始第四阶段。有两种启动阶段的方法:
  • 通过命令行:

    MVN包

    第 4 部分. Maven 基础知识 - 6
  • 使用 Intellij IDEA:

    第 4 部分. Maven 基础知识 - 7

    在启动包之前,将执行验证、编译和测试阶段。清洁阶段是个例外。建议在每个新项目构建之前调用它。可以用空格分隔列出阶段:

    mvn 干净的包。

此外,每个阶段都有预阶段和后阶段:例如,预部署、后部署、预清理、后清理,但它们很少使用。此外,每个阶段都有目标。默认情况下包含标准目标,其他目标由 Maven 插件添加。有时在某个阶段您需要执行附加功能。有 Maven 插件可以实现此目的。官方插件列表可以在 Maven 网站上找到。但要知道,仍然可以在第三方资源上找到许多自定义插件。好吧,当然,如果有一些特殊的需求,您总是有机会自己编写这样的插件

插件

要将 Maven 插件添加到项目中,其描述与依赖项类似,必须放置在 pom.xml 中的 <build> 和 <plugins> 标记中。例如,我们需要一个插件来检查所有外部库是否都使用最新版本。在网上搜索了一下,你可以找到这个插件,并附有使用说明。让我们设置它的groupId、artifactId 和version。让我们写下他必须在哪个阶段实现哪些目标。在我们的例子中,当前 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>example.com</groupId>
   <artifactId>example</artifactId>
   <version>1.0-SNAPSHOT</version>

   <build>
       <plugins>
           <plugin>
               <groupId>com.soebes.maven.plugins</groupId>
               <artifactId>uptodate-maven-plugin</artifactId>
               <version>0.2.0</version>
               <executions>
                   <execution>
                       <goals>
                           <goal>dependency</goal>
                       </goals>
                       <phase>validate</phase>
                   </execution>
               </executions>
           </plugin>
       </plugins>
   </build>

   <dependencies>
       <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version>
       </dependency>
   </dependencies>
</project>
我们仍然可以继续我们的项目。但让我们尝试将 Apache Commons IO 版本更改为 2.0 并开始构建项目。我们得到: [ERROR] Failed to execute goal com.soebes.maven.plugins:uptodate-maven-plugin:0.2.0:dependency (default) on project example: There is a more up-to-date version ( 2.6 ) of the dependency commons-io:commons-io:2.0 available. -> [Help 1] 这里我们有一个由插件引起的构建错误。错误消息指出,当 2.6 可用时,我们正在使用 2.0 版本。总的来说,Maven是一个非常有用的工具。一开始可能看起来很难使用,但是练习一下,在 Maven 下创建你的项目,一段时间后你会对结果感到非常满意。本文故意省略了很多有关 Maven 的细节——我们只关注要点。但完美是没有限制的:您可以在产品的官方网站上阅读有关 Maven 的更多信息。 第 5 部分:Servlet。编写一个简单的 Web 应用程序 第 6 部分. Servlet 容器 第 7 部分. 介绍 MVC(模型-视图-控制器)模式 第 8 部分. 编写一个小型 spring-boot 应用程序
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION