Maven项目细节
Maven 是一个广泛使用的 Java 项目管理和构建工具:
-
项目管理
- 项目对象模型(POM):Maven 使用 POM(Project Object Model)来管理项目。POM 是一个 XML 文件,包含了项目的元数据(如项目名称、版本、描述等)、依赖关系、构建配置等信息。每个 Maven 项目都有一个位于项目根目录的
pom.xml
文件。 - 依赖管理:Maven 通过在 POM 中声明依赖项,自动下载和管理项目所需的库和框架。例如,在
pom.xml
中添加以下依赖来引入 JUnit 测试框架:
- 项目对象模型(POM):Maven 使用 POM(Project Object Model)来管理项目。POM 是一个 XML 文件,包含了项目的元数据(如项目名称、版本、描述等)、依赖关系、构建配置等信息。每个 Maven 项目都有一个位于项目根目录的
<dependencies><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.8.2</version><scope>test</scope></dependency>
</dependencies>
- 依赖传递:Maven 会自动处理依赖的传递性,即如果项目 A 依赖于项目 B,而项目 B 又依赖于项目 C,Maven 会确保项目 C 的依赖也被正确引入到项目 A 中。
-
构建生命周期
- 清理(clean):删除以前构建生成的所有文件和目录,如
target
目录。 - 编译(compile):将项目的源代码编译成字节码文件。对于 Java 项目,会将
src/main/java
目录下的 Java 源文件编译到target/classes
目录中。 - 测试(test):运行项目的单元测试。Maven 默认使用 Surefire 插件来执行测试,测试代码通常位于
src/test/java
目录下。 - 打包(package):将项目打包成可部署的格式,如 JAR(Java Archive)、WAR(Web Application Archive)或 EAR(Enterprise Application Archive)文件。对于 Java 项目,JAR 文件会包含项目的类文件和依赖项(如果配置了)。
- 安装(install):将打包好的项目安装到本地 Maven 仓库中,以便其他项目可以依赖它。
- 部署(deploy):将项目部署到远程 Maven 仓库,供团队成员或其他项目使用。
- 清理(clean):删除以前构建生成的所有文件和目录,如
-
仓库管理
- 本地仓库:Maven 在本地计算机上维护一个仓库,用于存储下载的依赖项和已安装的项目构件。默认情况下,本地仓库位于用户主目录下的
.m2/repository
目录。 - 远程仓库:Maven 从远程仓库下载依赖项。中央仓库(Maven Central Repository)是默认的远程仓库,包含了大量的开源库和框架。此外,项目也可以配置使用其他远程仓库,如公司内部的私有仓库。
- 本地仓库:Maven 在本地计算机上维护一个仓库,用于存储下载的依赖项和已安装的项目构件。默认情况下,本地仓库位于用户主目录下的
-
插件机制
- Maven 通过插件来扩展其功能。每个构建阶段(如编译、测试、打包等)都可以由相应的插件来执行。例如,Maven Compiler 插件用于编译 Java 源代码,Maven Surefire 插件用于执行单元测试。用户可以在
pom.xml
中配置插件的参数和行为,以满足项目的特定需求。
- Maven 通过插件来扩展其功能。每个构建阶段(如编译、测试、打包等)都可以由相应的插件来执行。例如,Maven Compiler 插件用于编译 Java 源代码,Maven Surefire 插件用于执行单元测试。用户可以在
-
多模块项目
- 对于大型项目,可以将其拆分为多个模块。每个模块都是一个独立的 Maven 项目,有自己的
pom.xml
文件。模块之间可以定义依赖关系,父模块可以管理子模块的版本和依赖等信息。这有助于提高项目的可维护性和可扩展性。
- 对于大型项目,可以将其拆分为多个模块。每个模块都是一个独立的 Maven 项目,有自己的
IDEA中构建Maven
在IDEA中创建Maven项目
其中
GroupId 为域名的后缀
ArtifactId为样例
<parent>为依赖包及版本的集中管理
<dependencies> 依赖
<build> 构建工具