项目描述对象模型

Maven 首先标准化的内容之一是项目描述。在 Maven 之前,每个 IDE 都有自己的项目文件,其中存储了有关项目及其程序集的信息(通常以二进制形式)。

Maven 提出了一个基于 XML 的通用开放标准,该标准描述了项目是什么、应该如何构建以及它使用各种标签具有哪些依赖项。项目描述包含在一个文件中,通常名为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>

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


</project>

这个例子写了三件事:

  • 有关maven 项目标准版本的信息是蓝色的。
  • 有关项目本身的信息以红色显示。
  • 有关已用库的信息是绿色的。

让我们仔细看看pom文件设备。

Maven项目结构

紧接着的问题是:你注意到最后一个例子中的奇怪之处了吗?它不包含有关项目代码本身的信息!没有关于 java 文件、资源、属性文件、html、构建脚本等的存储位置的消息。

答案很简单——Maven 标准化了项目的设计。在项目中组织代码有多种选择,最常见的是:

在标准 IDEA 项目之后,该结构有点不寻常,但它是通用的。生活中你会遇到的项目90%都会有这种文件夹结构

如果您创建一个 Maven 项目(使用 IDEA 或使用控制台),那么它将采用指定的形式。让我们看看它是如何在这里工作的。

您猜对了, src文件夹包含项目的源代码。它有两个子文件夹:maintest

/src/main/java文件夹是项目中所有 Java 类的根目录。如果您有 com.codegym.Cat 类,那么它将位于/src/main/java /com/codegym /Cat.java文件夹中。如果有文本或二进制资源,它们应该存储在/src/main/resources文件夹中。

/src/test文件夹的结构类似于/src/main文件夹的结构,但它包含测试及其资源。Maven 本身知道如何在构建项目时运行必要的测试,但我们将在单独的讲座中讨论这一点。

项目中还有一个/target文件夹,Maven 会在项目构建完成后将其保存在该文件夹中。由于大型项目通常具有重要的构建脚本,因此此文件夹中不存储任何内容。

/target文件夹的第二个用途是缓存中间构建结果。在构建大型项目时,Maven 只能重建其中发生变化的部分,从而将构建时间加快数倍。

嗯,作为蛋糕上的樱桃 - 项目的最根是 pom.xml 文件。它包含有关该项目的所有必要信息,我们将在下面讨论。

设备 pom.xml

首先,pom 文件是 xml,因此它包含标准标头和命名空间信息。这都是关于纯 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">

        ...

</项目>

此外,<project> 标签内的第一行通常是对 pom 文件标准版本的描述。几乎总是 4.0。这也是我们不感兴趣的。

我们感兴趣的第一行看起来像这样:

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.sample.app</groupId>
  <artifactId>new-app</artifactId>
  <version>1.0-SNAPSHOT</version>

为了不再次理解我们在Maven标准中所描述的(程序、项目、模块、库等),这里统称为工件这个词。你无法拒绝 Maven 的创造者的是对标准化的热爱。

您看到的三个标签的意思是:

  • groupId - 应用所属的包,加上域名;
  • artifactId – 唯一的字符串键(项目 ID);
  • version - 项目的版本。

这三个参数足以毫不含糊地描述任何一件神器

此外,在项目描述之后,通常会有项目使用的工件(库)列表。它看起来像这样:

   <dependencies>

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

   </dependencies>

在此示例中,我们将 commons-io 包 2.6 版中的 commons-io 库添加到我们的项目中。

在构建时,Maven 将在其全局存储库中找到这样一个库并将其添加到您的项目中。顺便说一句,不仅 Maven 可以做到这一点。

IDEA 如何与 Maven 一起工作

Intellij IDEA 非常擅长与 Maven 合作。她知道如何打开这样的项目,自己创建它们,运行各种构建脚本,并且完全理解其中包含的库。

它甚至有一段时间有自己内置的 Maven,但你仍然需要能够自己安装和配置它,所以 IDEA 的这个特性前面没有提到。从理论上讲,IDEA 可以在两个 Maven 之间产生冲突,所以你知道有两个对你有好处。

如何在IDEA中新建一个Maven项目:

单击菜单文件 > 新建项目。选择左侧的菜单项New Project

maven项目

让我们澄清一些要点:

  1. 项目名;
  2. 项目文件夹;
  3. 项目语言为Java;
  4. 项目类型是 Maven。

在底部的 Advanced Settings 部分,IDEA 会提示你指定我们新项目的 goupID、artifactID 和版本。以后可以随时轻松更改此数据。从建议的选项中选择或输入您自己的选项:

Maven 项目 2

接下来,在需要的位置规范地创建一个项目。结果,我们看到了结构:

Maven 项目 3

必须在 java 文件夹中创建类和包,我们已经谈到了这一点。而且我认为您可以轻松应对。我们已准备好继续前进,但让我们稍微回顾一下我们“略过”的一个重要问题。