Maven
Maven
文章目录
一、Maven简介?
Maven 是一款为 Java 项目构建管理、依赖管理的工具,使用 Maven 可以自动化构建、测试、打包和发布项目,大大提高了开发效率和质量。
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.
二、Maven主要作用
1.依赖导入
通过配置maven工程的pom文件,可以将我们项目需要第三方库(依赖),如Druid连接池、MySQL数据库驱动等下载到我们的项目中来
2.依赖管理
Maven 可以管理项目的依赖,包括自动下载所需依赖库、自动下载依赖需要的依赖并且保证版本没有冲突、依赖版本管理等。通过 Maven,我们可以方便地维护项目所依赖的外部库,而我们仅仅需要编写配置即可。
3.项目构建
Maven 可以管理项目的依赖,包括自动下载所需依赖库、自动下载依赖需要的依赖并且保证版本没有冲突、依赖版本管理等。通过 Maven,我们可以方便地维护项目所依赖的外部库,而我们仅仅需要编写配置即可。
三,Maven工程介绍
1.GAVP属性
GAVP是指GroupId、ArtifactId、Version、Packaging等四个属性,其中前三个是必要的,这四个属性主要用于在Maven仓库中为每个项目做一个标识,方便后期项目之间相互引用依赖等。
1:GroupId:格式为com.{公司/BU}.业务线.[子业务线],最多4级。例如:com.taobao.tdd。
2:ArtifactId:格式为产品线名-模块名。语义不重复不遗漏,先到仓库中心去查证一下。例如:tc-client
3:Version:版本号,格式推荐为主版本号.次版本号.修订号。例如:初始→1.0.0,调整模块2.0.0,修bug→1.0.1,功能调整→1.1.0等。
4:Packaging:指示将项目打包为什么类型的文件,idea根据packaging值,识别maven项目类型。
- packaging属性为jar,代表普通的Java工程,打包以后是.jar结尾的文件。
- packaging属性为war,代表Java的web工程,打包以后是.war结尾的文件。
- packaging属性为pom表示这是一个聚合项目,这意味着这个项目不包含Java代码或资源,只是为了聚合其他子模块或工程而存在的。
<groupId>com.zjr</groupId>
<artifactId>maven_parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
2,Maven项目结构
- pom.xml:Maven 项目管理文件,用于描述项目的依赖和构建配置等信息。
- src/main/java:存放项目的 Java 源代码。
- src/main/resources:存放项目的资源文件,如配置文件、静态资源等。
- src/main/webapp/WEB-INF:存放 Web 应用的配置文件。
- src/main/webapp/index.html:Web 应用的入口页面。
- src/test/java:存放项目的测试代码。
- src/test/resources:存放测试相关的资源文件,如测试配置文件等。
三、Maven核心功能依赖和构建管理
1,Maven依赖管理
在pom文件下可以的标签下配置需要导入的依赖,可以通过里面定义属性的方式去同意控制版本(作用类似与C语言中define的参数,只是进行字符替换)
<properties>
<!-- 定义了版本信息,放在名为jackson.version的属性中-->
<jackson.verson>2.16.0</jackson.verson>
</properties>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<!-- 使用定义的Jackson.version属性-->
<version>${jackson.verson}</version>
</dependency>
</dependencies>
</project>
2,项目构建
Maven提供了一套标准化的构建流程,包括编译、测试、打包、发布等,使用简单的命令就能完成项目的构建。
1:自动化构建:Maven能够自动化构建项目,通过定义好的生命周期和插件,自动完成项目的编译、测试、打包、部署等过程,减少了手动操作。
2:丰富的插件支持:Maven有丰富的插件支持,可以方便地扩展和定制构建过程,满足不同的构建需求。
版本管理:Maven能够方便地管理项目的版本,通过版本号的管理,可以方便地跟踪和回溯项目的历史版本。
- Maven命令的生命周期是指通过执行Maven命令来触发相应的构建阶段。Maven构建过程中会按照预设的阶段顺序执行,每个阶段都会调用相应的插件来完成特定的任务。
清理阶段:执行pre-clean和clean阶段,清理上一次构建生成的文件。
编译阶段:执行compile阶段,编译项目的源代码。
测试阶段:执行test阶段,使用合适的单元测试框架来测试已编译的源代码。
打包阶段:执行package阶段,将编译好的代码打包成可发布的格式。
部署阶段:执行install阶段,将打包好的项目安装到本地仓库,供其他项目引用。
除了上述的生命周期,Maven还提供了其他命令来执行特定的构建阶段,如mvn test只执行测试阶段,mvn package只执行编译、测试和打包阶段等。这些命令可以根据实际需要灵活使用,以便快速构建或跳过某些不必要的阶段。
四,Maven继承聚合特性
1 ,Maven工程继承关系
Maven 继承是指在 Maven 的项目中,让一个项目从另一个项目中继承配置信息的机制。继承可以让我们在多个项目中共享同一配置信息,简化项目的管理和维护工作。注意父工程打包方式为pom,子工程要用来指定所继承的父工程,优点如下
- 统一管理依赖,子工程的可以继承父工程的依赖,或是父工程声明的依赖,保证了整个项目规范、准确使用 jar 包
父工程配置如下
<!-- 聚合,对项目构建简化,并且优化构建顺序-->
<!-- 一般构建和聚合同时存在,但是若不想子模块被父工程统一构建可不用配置-->
<modules>
<!-- 统一构建管理的两个子工程-->
<module>sonA</module>
<module>sonB</module>
</modules>
<!-- 使用dependencyManagement标签配置对依赖的管理 -->
<!-- 被管理的依赖并没有真正被引入到工程(该工程并没有导入一下依赖,而是对子工程依赖的规范化) -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<!-- 版本使用引用值-->
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.0.0.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
子工程如下
<!-- 使用parent标签指定当前工程的父工程 -->
<parent>
<!-- 父工程的坐标 -->
<groupId>com.zjr</groupId>
<artifactId>maven_parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<!-- 子工程的坐标 -->
<!-- 如果子工程坐标中的groupId和version与父工程一致,那么可以省略 -->
<!-- <groupId>com.atguigu.maven</groupId> -->
<artifactId>sonA</artifactId>
<!-- 子工程引用父工程中的依赖信息时,可以把版本号去掉,由父工程决定。-->
<!-- 若本工程重新规定版本号,则父工程版本被覆盖。-->
<!-- 具体来说是由父工程的dependencyManagement来决定。 -->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
</dependencies>
2,Mevan工程聚合
- 聚合概念
Maven 聚合是指将多个项目组织到一个父级项目中,通过触发父工程的构建,统一按顺序触发子工程构建的过程。 - 聚合作用
- 统一管理子项目构建:通过聚合,可以将多个子项目组织在一起,方便管理和维护。
- 优化构建顺序:通过聚合,可以对多个项目进行顺序控制,避免出现构建依赖混乱导致构建失败的情况。
- 一般来说构建了继承关系maven就会在父工程中自动添加聚合关系,但是要明白,若有一个模块不需要随着父工程一起被构建,是可以在父工程中去掉聚合配置的。
<!-- 聚合,对项目构建简化,并且优化构建顺序-->
<!-- 一般构建和聚合同时存在,但是若不想子模块被父工程统一构建可不用配置-->
<modules>
<!-- 统一构建管理的两个子工程-->
<module>sonA</module>
<module>sonB</module>
</modules>
总结
此文章参考了wolai
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!