前言
在上一篇文章中,我们对 Maven 有了初步的了解,包括它的定义、安装步骤以及一些基本的配置方法。Maven 是一个强大的项目管理工具,它可以帮助开发者自动化构建过程,并且管理项目的依赖关系。
今天,我们将深入探讨 Maven 的核心概念,并学习一些在日常使用中非常实用的命令。
Maven 核心
构建
所谓构建,就是指项目的构建,它是面向过程的,是一系列步骤的总和,主要包括项目代码的编译、运行、测试、打包以及部署等等。而 Maven 所支持的构建主要有如下几种:
- 清理:删除之前编译产生的文件,为新的代码编译做好准备;
- 编译:将源代码编译为执行代码,支持批量编译;
- 测试:通过执行测试代码,验证功能是否正常,而且它也是支持批量测试的;
- 报告:通过执行测试,生成测试结果的文件;
- 打包:讲项目中的
class
文件、配置文件打包到一个压缩文件中。对于一般程序,打包的压缩文件扩展名通常是.jar
,而对于 Web 应用,则起压缩文件扩展名通常是.war
; - 安装:把打包好的文件安装到本地仓库;
- 部署:让程序跑起来。
Maven 核心概念
- pom:项目对象模型,Maven 将项目当做一个模型,用于控制 Maven 构建项目的过程,通过它来管理 jar 依赖;
- 目录结构:Maven 的目录和文件位置都是约定俗成的;
- 坐标:用于表示资源的唯一标识;
- 依赖管理:使用 jar 文件来管理项目;
- 仓库管理:资源存放的路径;
- 生命周期:Maven 工具构建项目的过程;
- 插件和目标:执行 Maven 构建是的工具就是插件
- 继承
- 聚合
常用命令
Maven 中的一些常见命令如下:
命令 | 含义 | 功能 |
---|---|---|
mvn clean | 清理 | 用于清理已编译好的文件 |
mvn compile | 编译 | 将 Java 源代码编译成字节码 .class 文件 |
mvn test | 测试 | 项目测试 |
mvn package | 打包 | 根据用户配置,将项目打包为 jar 包或 war 包 |
mvn install | 安装 | 手动向本地仓库安装一个 jar |
mvn deploy | 上传 | 将 jar 上传到私服 |
利用 Archetype 来生成项目骨架
实际上,为了更快捷的创建 Maven 项目骨架,我们可以使用 maven archetype 来创建,创建过程如下:
- 首先进入你要创建项目骨架的目录,然后执行如下命令:
mvn archetype:generate
- 然后会有很长的输出,有多种可用的 Archetype 供你选择,选择你所需要的,然后输入对应编号即可;
- 接着会让你输入
groupId
、artifactId
、version
、package
等信息;
- 再接着让你确认相关信息;
- 最后确认无误后,回车生成即可。
项目结构
项目生成后的目录中主要包含如下文件:
其中 src
目录包含了项目的主代码和资源,同时还包括了测试相关的代码以及资源。而 pom.xml
则定义了项目的所有配置。
假设我们有一个 HelloWorld
的项目,我们利用 Maven 来进行管理时,其项目结构大致应该是如下:
HelloWorld/| ----src/ || -------- || main/ || ----- || | | java/ |
| --- || | resources/ |
| --- | ---------- || test/ |
| ----- || | java/ |
| --- || |resources/|----pom.xml
其中 HelloWorld
是根目录,也就是我们的工程名,而 src
目录下主要是存放源代码,其下有主要分为 java
和 resources
,java
目录主要用于存放程序包以及程序包中的 Java 文件,resources
目录则是存放程序中所要使用的配置文件。
test
目录结构同 src
,只不过顾名思义,这里主要是存放用于测试的代码和配置文件,而且这不是一个必选项,我们可以根据自己的需要进行选择。
最后则是 pom.xml
,这个每个 Maven 所管理项目的核心文件,这是必须的,后续的依赖管理等工作都基于此文件来操作。
最后
如果觉得内容有帮助,可以通过点赞和关注来支持作者。同时,作者也预告了下一期内容,将深入探讨如何使用 Maven 进行依赖管理,这是一个对于任何 Maven 用户来说都非常重要的话题。
通过今天的学习,读者应该对 Maven 的使用有了更深入的了解,包括如何执行基本的构建命令,如何利用 Archetype 生成项目,以及 Maven 项目的目录结构。这些知识对于提高开发效率和项目质量都是非常有价值的。期待下一期内容,继续深入了解 Maven 的强大功能。