简单认识Maven 1

1.基本概念

Maven 是一个开源的项目管理和构建工具,主要用于 Java 项目,但也支持其他基于 JVM(Java Virtual Machine)的项目,如 Scala、Groovy 等。它基于项目对象模型(Project Object Model,POM)的概念,通过一个名为pom.xml的配置文件来管理项目的构建、依赖关系等重要方面。

项目对象模型(POM) - pom.xml
核心元素

groupId:通常代表项目所属的组织或团体的唯一标识符,类似于 Java中的包名。例如,org.apache.maven中的org.apache表示 Apache 软件基金会这个组织。

artifactId:是项目在组织内的唯一标识符,也就是项目的名称。例如,在org.apache.maven:maven -

compiler - plugin中,maven - compiler - plugin就是这个插件项目的 artifactId。

version:指定项目的版本号,遵循一定的版本命名规范,如1.0.0 -

SNAPSHOT(表示快照版本,通常用于开发过程中的不稳定版本)或2.3.4(表示正式发布版本)。 依赖管理

在pom.xml中,可以使用元素来声明项目所依赖的其他库或项目。例如:

java 复制代码
		<dependencyes>
		  <dependency>
	           <groupId>org.springframework</groupId>
	           <artifactId>spring - core</artifactId>
	           <version>5.3.0</version>
	       </dependency>
       </dependencyes>

这就声明了项目依赖于 Spring 框架的spring - core库,版本为5.3.0。Maven 会根据这些信息自动从本地或远程仓库获取所需的依赖项。
构建配置

可以在pom.xml中配置项目的构建相关信息,如构建的源文件目录、目标文件目录、插件配置等。例如,配置maven - compiler - plugin来指定 Java 编译的源版本和目标版本:

java 复制代码
    <build>
           <plugins>
               <plugin>
                   <groupId>org.apache.maven.plugins</groupId>
                   <artifactId>maven - compiler - plugin</artifactId>
                   <version>3.8.1</version>
                   <configuration>
                       <source>1.8</source>
                       <target>1.8</target>
                   </configuration>
               </plugin>
           </plugins>
       </build>

2.依赖管理机制

依赖范围(Scope

compile:这是默认的依赖范围。表示该依赖项在项目的编译、测试和运行阶段都需要。例如,一个普通的 Java Web 项目中的

Spring 框架依赖,在编译源代码、运行测试用例和实际运行项目时都需要用到。

test:表示依赖项仅在测试阶段需要。如junit测试框架,只用于编写和运行单元测试,不会被包含在最终发布的项目中。

runtime:依赖项在编译时不需要,但在运行时是必需的。例如,数据库驱动程序,在编译项目时不需要数据库驱动,但在运行项目连接数据库时就需要。

依赖传递性

如果项目 A 依赖项目 B,项目 B 依赖项目 C,Maven 会根据依赖的范围等因素来确定是否将项目 C 作为项目 A 的依赖项。例如,如果 B 对 C 的依赖范围是compile,且 A 对 B 的依赖范围也是compile,那么 Maven 会自动将 C 作为 A 的依赖项(传递依赖)。

构建生命周期(Build Lifecycle)

2.常见阶段(Phase)

clean:用于清理项目,删除之前构建过程中生成的文件,如编译后的类文件、打包后的文件等。

compile:编译项目的源代码,将.java文件编译成.class文件。

test:运行项目中的测试用例,通常是基于junit或其他测试框架编写的单元测试和集成测试。

package:将项目打包成可发布的格式,如对于 Java 项目可以打包成.jar(普通 Java 项目)或.war(Java Web项目)文件。

install:将打包后的项目安装到本地 Maven 仓库中,以便其他本地项目可以依赖这个项目。

deploy:将项目部署到远程 Maven 仓库,通常用于发布项目到企业内部的仓库或者公共的 Maven 仓库供他人使用。

命令执行

可以通过在命令行输入mvn 来执行相应的构建阶段。

例如,mvn clean install会先执行clean阶段,清理项目,然后执行install阶段,完成编译、测试、打包并安装到本地仓库的一系列操作。

3.插件(Plugins)

常用插件

maven - compiler - plugin:用于编译 Java 源代码,如前面提到的可以配置编译的源版本和目标版本。 maven -

war - plugin:专门用于将 Java Web 项目打包成.war文件的插件,可配置打包的相关参数,如包含或排除某些文件。

maven - site - plugin:用于生成项目的网站文档,包括项目的 API 文档、项目报告等内容。

插件配置与执行

插件在pom.xml中进行配置,除了配置基本的插件版本和参数外,还可以通过绑定到构建生命周期的特定阶段来执行插件任务。

例如,maven - compiler - plugin默认绑定到compile阶段,当执行mvn compile时,这个插件就会自动执行编译任务。

4.仓库(Repositories)

本地仓库(Local Repository)

Maven 在本地计算机上维护一个本地仓库,默认位于用户主目录下的.m2目录(在 Linux 和 Mac 系统中)或者C:\Users\ <用户名>.m2目录(在 Windows 系统)。本地仓库用于存储从远程仓库下载的依赖项,当构建项目时,Maven 首先会在本地仓库中查找所需的依赖项。
远程仓库(Remote Repository)
Maven 中央仓库 :这是最常用的远程仓库,地址为https://repo.maven.apache.org/maven2/,其中包含了大量开源项目的库。
私有仓库
:企业或组织可以搭建自己的私有仓库,用于存储内部开发的库或者无法从公共仓库获取的第三方库。项目可以配置同时从公共仓库和私有仓库获取依赖项。

相关推荐
儿时可乖了26 分钟前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
ruleslol27 分钟前
java基础概念37:正则表达式2-爬虫
java
xmh-sxh-131444 分钟前
jdk各个版本介绍
java
天天扭码1 小时前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
程序猿进阶1 小时前
堆外内存泄露排查经历
java·jvm·后端·面试·性能优化·oom·内存泄露
FIN技术铺1 小时前
Spring Boot框架Starter组件整理
java·spring boot·后端
小曲程序1 小时前
vue3 封装request请求
java·前端·typescript·vue
陈王卜2 小时前
django+boostrap实现发布博客权限控制
java·前端·django