CodeGym /Java 博客 /随机的 /第 4 部分 Maven 的基础知识
John Squirrels
第 41 级
San Francisco

第 4 部分 Maven 的基础知识

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

Maven的逐步安装

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

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

  3. 为确保已安装所有内容,请在命令行上执行以下命令:

    mvn-版本

  4. 如果显示了Maven、Java等的版本信息,那么就万事大吉了。

  5. 现在打开 IntelliJ IDEA 并创建一个新项目。在第一个窗口中,选择 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 的依赖项列表中。

依赖项在 pom.xml 文件的 dependencies 节点中指定

假设您的项目中需要 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 库,我们去官方网站并选择“依赖信息”选项卡。所有必要的信息都在这里——您可以简单地复制它并将其添加到<dependencies>节点。

  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. compile — 编译源代码文件
  4. 测试——开始测试
  5. package — 打包编译文件(在 JAR、WAR 等存档中)
  6. verify — 检查打包文件是否准备就绪
  7. install — 将包放在本地存储库中。现在它可以被其他项目用作外部库
  8. 站点——创建项目文档
  9. deploy — 将构建的存档复制到远程存储库
所有阶段都按顺序执行:例如,在第 1-3 阶段完成之前,第四阶段无法开始。有两种方法可以开始一个阶段:
  • 通过命令行:

    mvn包

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

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

    在打包阶段开始之前,执行验证、编译和测试阶段。清洁阶段是一个例外。在每次构建项目之前运行此阶段是个好主意。您可以列出多个阶段,用空格分隔它们:

    mvn 干净的包。

此外,每个阶段都有前阶段和后阶段:例如部署前、部署后、清理前、清理后等,但很少使用。此外,每个阶段都有目标。默认设置标准目标。Maven 插件添加了额外的目标。有时在一个阶段中,您可能需要执行其他功能。为此有 Maven 插件。可以在Maven 网站上找到官方插件列表。但是您应该知道,可以在第三方网站上找到许多自定义插件。当然,如果出现一些特殊需求,您始终可以自己编写自定义插件

插件

要将 Maven 插件添加到项目中,我们需要将其描述添加到 pom.xml 文件中,使用<build><plugins>标记,类似于我们添加依赖项的方式。例如,假设我们需要一个插件来验证我们使用的是所有外部库的最新版本。在互联网上稍作搜索后,您可以找到该插件及其使用说明。让我们设置 groupId、artifactId 和版本。我们将指出插件必须实现的目标以及在什么阶段。在我们的例子中,当前 pom.xml 中的依赖项检查设置为在验证阶段发生。现在我们的 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 和 Java Servlet API。编写一个简单的 Web 应用程序 第 6 部分。Servlet 容器 第 7 部分。介绍 MVC(模型-视图-控制器)模式
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION