1.1 大型程序

我们已经学会了如何编写小程序,所以现在我们将学习如何编写大程序。如您所知,程序越大越复杂,为其开发支付的钱就越多:)让我们从一些背景开始......

随着程序规模的增长,开发人员面临着两个新的挑战:

  • 很多人都在为同一个程序工作。
  • 没有这样的人会知道程序的全部代码。

很多时候,当程序员在程序的一个地方修复了一个错误,同时在另一个地方破坏了某些东西时,情况就开始出现了。发布文档甚至有这个笑话:

变更清单:

  • 修复了旧错误:)
  • 添加了新的:(

然后他们想出了两种方法来解决这个问题:技术和管理。

技术方法是将程序分成几个部分:库和模块。每个这样的模块都是一块小砖块,然后可以从中构建大型项目。库是可以在不同程序中使用的通用组件。

管理方法更有趣——他们限制了可以从事一个项目/图书馆的人数。根据经验,他们甚至提出了一个规则:团队的规模应该大到“两个比萨饼就能养活它。 ” 这通常意味着如果有超过8 个人在做一个项目,那么它需要拆分成两个项目。

在 Java 开发人员社区中,编写适用于所有场合的库并使其公开可用已成为一种流行趋势。因此,Java 程序员不能再次编写相同的代码(通常是原始的并且包含错​​误),而是使用现成的和经过验证的解决方案

另一个动机是 Java 语言在编写服务器端解决方案(它在后端工作)时大受欢迎。首先,服务器软件对可靠性的要求更高, 使用久经考验的库总比自己写代码好。

其次,服务器实际上对代码的大小没有限制。移动应用程序的开发人员试图将其塞入 10 兆字节,而桌面应用程序则塞入 100 兆字节。一个 Java 后端开发人员可以将数十 GB 的库塞进一个项目中,没有人会和他说一句话:)

顺便说一句,这不是开玩笑。您很容易遇到包含几十个模块和几百个库的后端项目。但是描述(和更改!)此类项目的构建脚本变得极其困难。

然后 Maven 出现了。

1.2 Maven简介

Maven是一个用于项目构建管理的特殊“框架”。它标准化了三件​​事:
  • 项目描述;
  • 项目构建脚本;
  • 库之间的依赖关系。

Maven的前身是Ant,继任者是Gradle。但正是 Maven 开发和完善了这三个列出的标准,并规范了它们的交互。是他将 Java 社区的工作带到了一个新的水平。让我们更详细地看一下。

行家

从技术上讲,Maven 是一个特殊的程序/服务,其主要目的是管理构建项目的过程。它可以简单地作为存档下载并解压到任何目录。您不需要为此专门安装程序。

她没有图形界面 -所有命令都是使用控制台向她提供的。为了使其更舒适地使用它,建议在您的操作系统中注册特殊的环境变量。

Maven 还有一个特殊的存储库(目录/文件夹),它存储在构建项目时使用的库。您需要选择磁盘上的某个文件夹并将其指定为存储库。

另一个有趣的事情是所有库都有一个全局 Maven 存储库,但我们稍后会讨论这个。

1.3 下载并安装Maven

Maven 有一个官方站点maven.apache.org。该项目有很多文档,所以如果您有任何困难或其他问题 - 请进来,不要害羞。

同样在下载页面 ( https://maven.apache.org/download.cgi ) 上,您可以下载 maven 存档 (apache-maven-3.8.5-bin.zip)。解压后的存档大约需要 10 MB,尽管本地 Maven 存储库最终将需要数百兆字节的内存。

Maven 是用 Java 编写的,需要至少版本 7 的 JRE,以及定义的 JAVA_HOME 环境变量。

只需在您的计算机上为 Maven 创建一个文件夹,例如d:\devtools,然后将带有 Maven 的存档解压缩到其中。因此,您应该得到一个类似d:\devtools\maven\bin 的文件夹,项目的主要二进制文件将位于其中。

1.4 环境变量

之后,您需要将解压后的存档到 bin 文件夹的路径添加到 PATH 环境变量中。

要在 Windows 10 中设置环境变量,您需要进入控制面板 - 系统 - 高级系统设置。然后点击“环境变量”,找到PATH选择“编辑”,然后把路径d:\devtools\maven\bin添加到该行的末尾。注意,路径必须准确指向 bin 文件夹。

在基于 Unix 的操作系统上,可以使用控制台命令添加环境变量:

export PATH=/opt/apache-maven-3.8.5/bin:$PATH

如果你做的一切都正确,那么你需要在控制台中输入命令:“mvn -v”。作为回应,您会看到类似以下内容:

C:\Users\Zapp>mvn -v
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 15:51:28+0200)
Maven home: T:\apache-maven-3.0.5\bin\..
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_65\jre
Default locale: en_US, platform encoding: Cp1251
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"

1.5 本地 Maven 仓库

您还可以设置一个特殊的文件夹,Maven 将在其中存储构建项目时将使用的 jar 库。此文件夹称为本地 maven 存储库

如果没有指定这样的文件夹,Maven 将在当前用户的主目录中创建它。我的目录是:C:\Users\Zapp\.m2

该文件夹有一个相当具体的名称“.m2”。虽然它不会吓到 Linux 用户 - 这是一种相当普遍的方法来命名各种“存储库”和/或任何其他服务信息存储。

重要的!不要将 Maven 放在系统文件夹中,因为它在运行期间需要对这些文件夹的写入权限,这可能对防病毒软件或操作系统不利。

3.5 版之前的 Maven 需要一个名为 M2_HOME 的环境变量,但这不再是必需的。

您可以在以下链接阅读有关配置 Maven 的更多信息:https ://maven.apache.org/configure.html