项目描述对象模型
Maven 首先标准化的内容之一是项目描述。在 Maven 之前,每个 IDE 都有自己的项目文件,其中存储了有关项目及其程序集的信息(通常以二进制形式)。
Maven 提出了一个基于 XML 的通用开放标准,该标准描述了项目是什么、应该如何构建以及它使用各种标签具有哪些依赖项。项目描述包含在一个文件中,通常名为pom.xml。
示例pom.xml文件:
<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文件夹包含项目的源代码。它有两个子文件夹:main和test。
/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 标准的,所以我们不会详细讨论它。这意味着:
<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。这也是我们不感兴趣的。
我们感兴趣的第一行看起来像这样:
<groupId>com.sample.app</groupId>
<artifactId>new-app</artifactId>
<version>1.0-SNAPSHOT</version>
为了不再次理解我们在Maven标准中所描述的(程序、项目、模块、库等),这里统称为工件这个词。你无法拒绝 Maven 的创造者的是对标准化的热爱。
您看到的三个标签的意思是:
- groupId - 应用所属的包,加上域名;
- artifactId – 唯一的字符串键(项目 ID);
- version - 项目的版本。
这三个参数足以毫不含糊地描述任何一件神器。
此外,在项目描述之后,通常会有项目使用的工件(库)列表。它看起来像这样:
<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。
让我们澄清一些要点:
- 项目名;
- 项目文件夹;
- 项目语言为Java;
- 项目类型是 Maven。
在底部的 Advanced Settings 部分,IDEA 会提示你指定我们新项目的 goupID、artifactID 和版本。以后可以随时轻松更改此数据。从建议的选项中选择或输入您自己的选项:
接下来,在需要的位置规范地创建一个项目。结果,我们看到了结构:
必须在 java 文件夹中创建类和包,我们已经谈到了这一点。而且我认为您可以轻松应对。我们已准备好继续前进,但让我们稍微回顾一下我们“略过”的一个重要问题。
GO TO FULL VERSION