maven项目管理

第一章 maven简介

传统项目管理状态分析

jar包不统一,jar不兼容

工程升级维护过程操作繁琐

1.maven是什么

maven本质是一个项目管理工具,将项目开发和管理过程抽象称一个项目对象模型(POM)

POM(project object model):项目对象模型

2.maven的作用

项目构建:提供标准的,跨平台的自动化项目构建方式

依赖管理:方便快捷的管理项目依赖资源(jar),避免资源间的版本冲突问题

统一开发结构:提供标准的,统一的项目结构



第二章 maven下载与安装

1.maven的安装

官网地址:http://maven.apache.org/

下载地址:http://maven.apache.org/download.cgi

2.maven文件目录

bin:maven运行指令

boot:类加载器

conf:maven配置文件

lib:maven运行所依赖的jar包

3.maven环境变量

依赖java,需要配置JAVA_HOME

设置maven自身的运行环境,需要配置maven_home

JAVA_HOME:C:\Program Files\Java\jdk1.8.0_101\bin
maven_home:C:\dev\apache-maven-3.3.9\bin

检测是否配置成功:cmd 输入 mvn



第三章 maven基础概念

1.仓库

用于存储资源,包含各种jar包

中央仓库 https://mvnrepository.com/

2.仓库分类

本地仓库:自己的计算机上存储的资源,从中央仓库获取资源

中央仓库:maven自己管理,包含99%的jar包,为本地仓库提供资源

私服:公司的仓库存储的资源,从中央仓库下载

3.私服的作用

保存具有版权的资源,包含购买或自主研发的jar

中央仓库的jar都是开源的,不能存储具有版权的jar

一定范围内资源共享,仅对内部开放,不对外共享

4.坐标

maven中坐标用于描述仓库中资源的位置

坐标的主要组成

groupid: 定义当前maven项目隶属于组织的名称(通常是域名反写,例如:org.mybatis)

artifactid: 定义当前maven项目名称(通常是模块名称)

version: 定义当前项目的版本号

5.配置本地仓库

本地仓库仓库默认位置 C:\Users\wanghaoran.m2\repository

修改:conf目录下 setting文件中添加

<localRepository>要配置仓库的绝对位置</localRepository>

maven是国外服务器下载速度比较慢,因此阿里推出了镜像

修改:conf目录下 setting文件中找到mirrors标签添加

<!--配置具体的仓库下载镜像-->
<mirror>
	<!--此镜像唯一标识符,用来区分不同的镜像-->     
    <id>nexus-aliyun</id>
     <!--对哪种仓库进行镜像,简单说就是替代哪个仓库-->
    <mirrorOf>central</mirrorOf> <!--central中央仓库-->
     <!--镜像名称-->
    <name>Nexus aliyun</name>
    	<!--镜像url-->
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>



第四章 maven工程

1.配置idea的maven

​ 配置maven的home

​ 修改maven版本,idea自带maven

​ 修改maven仓库位置,默认C:\Users\wanghaoran.m2\repository

2.配置依赖

<!--依赖-->
<dependencies>
     <!--具体依赖-->
        <dependency>
              <!--定义当前maven项目隶属于组织的名称-->
            <groupId>org.springframework</groupId>
              <!--定义当前maven项目名称-->
            <artifactId>spring-context</artifactId>
              <!--定义当前项目的版本号-->
            <version>5.3.20</version>
        </dependency>
</dependencies>

3.配置插件

    <!--构建-->
    <build>
	   <!--设置插件-->
        <plugins>
		  <!--具体插件-->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.1</version>
  			 <!--配置-->
                <configuration>
				<!--端口-->
                    <port>80</port>
				<!--路径-->
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>

4.pom.xml常用标签及说明

标签说明
modelVersion指定pom的模型版本
packaging打包方式(web工程为war,java工程为jar)
groupid所属的组织或者团队
artifactId项目的名称
version项目的版本号(release 完成版 snapshort 开发版)
dependencies设置当前工程的所有依赖
dependencie具体的依赖
build配置构建
plugins设置插件
plugin具体插件
configuration配置
port端口
path路径
optional可选依赖(当一个工程引入了另一个工程时不想展现当前依赖时,可以设置为true 默认false)
exclusions排除依赖
exclusions具体排除依赖(可以排除间接依赖)
scope依赖范围

5.依赖传递

依赖具有传递性

直接依赖:在当前项目中通过依赖配置建立的依赖关系

间接依赖:被依赖资源如果依赖其他资源,这种关系就叫做间接依赖

依赖传递时冲突问题:

层级越深,优先级越低,层级越浅,优先级越高

当资源在相同层级被依赖时,配置顺序靠前的覆盖配置靠后的

当同级配置了相同资源不同版本,后配置的生效

在同一个项目中,一个模块想引入另一个模块时

<!--只需要把对应的模块引入就可以-->
<dependencies>
  <dependency>
    <groupId>org.example</groupId>
    <artifactId>spring_01</artifactId>
    <version>1.0-SNAPSHOT</version>
  </dependency>
</dependencies>

6.依赖范围

依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用范围

作用范围

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传



第五章 生命周期和插件

1.生命周期

maven对项目构建的生命周期划分为3套

clean:清理工作

default:核心工作,例如编译,测试,打包,部署等

site:产生报告,发布站点等

2.插件

插件与生命周期的关系在于,插件可以绑定到生命周期的不同阶段中,以在构建过程的特定点执行相应的任务。通过在pom.xml文件中配置插件的执行,可以实现自定义的构建行为

【具体自行百度】

第六章 多模块开发

1.多模块开发的特点

  1. 模块化设计
    • 项目被拆分成多个功能单一、职责明确的模块,每个模块只关注特定的功能或逻辑部分。
  2. 独立构建
    • 每个模块可以独立编译、测试和打包,这使得开发过程更灵活,各个模块可以并行开发和测试。
  3. 共享依赖
    • 多个模块可以共享公共的依赖和构建配置,减少重复配置和依赖冲突。
  4. 提高可维护性
    • 通过模块化设计,代码结构更加清晰,有助于代码的理解和维护。
  5. 代码重用
    • 公共模块可以被多个其他模块依赖和重用,减少代码重复,提高开发效率。

2.多模块项目的结构

my-multi-module-project
│
├── pom.xml
│
├── module1
│   └── pom.xml
│
├── module2
│   └── pom.xml
│
└── module3
    └── pom.xml

3.dependencyManagement标签的使用

dependencyManagement 是 Maven 的一个标签,它用来在父 POM 中声明依赖版本信息,但不实际引入这些依赖。这样做的目的是为了在多个子模块中统一管理依赖的版本信息,确保依赖版本的一致性,并简化子模块的 POM 文件。

4.父工程注意

<groupId>org.qingniao</groupId>
<artifactId>springcloud</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>  

打包是pom

<modules>
    <module>user</module>
</modules>

module是子工程名
ven 的一个标签,它用来在父 POM 中声明依赖版本信息,但不实际引入这些依赖。这样做的目的是为了在多个子模块中统一管理依赖的版本信息,确保依赖版本的一致性,并简化子模块的 POM 文件。

4.父工程注意

<groupId>org.qingniao</groupId>
<artifactId>springcloud</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>  

打包是pom

<modules>
    <module>user</module>
</modules>

module是子工程名

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值