Maven的基础教程

简介:maven是项目构建和管理的工具,它提供了帮助管理、构建、报告、进行依赖管理等等。

一、maven的基本样式:

<project >
<modelVersion>4.0.0</modelVersion>
   <groupId>com.imooc.springboot.study</groupId>
   <artifactId>imooc-springboot-study</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   
   <dependencies>
       <dependency>
           <groupId>com.imooc.springboot</groupId>
           <artifactId>split-spring-boot-starter</artifactId>
           <version>1.0-SNAPSHOT</version>
       </dependency>
   </dependencies>
</project>

1、POM代表工程对象模型,它是使用Maven工作的基本组建,是一个xml文件。
2、它被放在工程根目录下,文件命名为pom.xml
3、POM包含了关于工程和各种配置细节的信息,Maven使用这些信息构建工程。

在这里插入图片描述

二、maven的常用命令

在这里插入图片描述
示例:

mvn clean -Dmaven.test.skip=true -U

-Dmaven.test.skip:跳过测试用例
-U:该参数能强制让Maven检查所有SNAPSHOT依赖更新,确保集成基于最新的状态,如果没有该参数,Maven默认以天为单位检查更新,而持续集成的频率应该比这高很多。

三、maven相关特性

  • 传递依赖与排除依赖
    (1)传递依赖:如果我们的项目引用了一个jar包,而该jar包又引用了其他的jar包。那么,在默认情况下,项目编译时,Maven会把直接引用和间接引用的jar包都下载到本地(~/.m2/repository)

    (2) 排除依赖:如果我们只想下载直接引用的jar包,那么需要在pom.xml中做如下配置(给出需要排除的坐标)

     <dependency>
        <groupId>org.apache.hbase</goupId>
        <artifactId>hbase</artifactId>
        <version>0.94.17</version>
        <exclusions>
            <exclusion>
              <goupId>commons-logging</goupId>
              <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
      </dependency>
    
  • 依赖冲突
    说明:若项目中多个jar同时引用了相同的jar时,会产生依赖冲突,但Maven采用了两种避免冲突的策略,因此在maven中是不存在依赖冲突的

1、短路优先(由于第二个路径比较短,本项目使用第二种路径的X.jar)
本项目->A.jar->B.jar->X.jar
本项目->C.jar->X.jar

2、声明优先
若引用路径长度相同时,在pom.xml中谁先被声明,就使用谁

  • 多模块项目/聚合
    为什么用多模块项目:(1)一开始使用单体架构,每次修改内容,都需要编译整个项目,时间过长(2)pom.xml使用来继承的,当其他的项目需要使用该项目的某个模块,当它是单体架构,必须把整个项目依赖进来,非常大,并且维护成本高

    为什么需要使用父模块: 每个子模块都有pom文件,都需要添加自己依赖的jar包,这样可能造成相同的依赖,都需要添加相同的依赖,并且可能出现版本号不一致的情况,所以使用父模块管理所有的jar包,其他的子模块只需要依附父模块
    在这里插入图片描述
    父模块的pom.xml需要注意的点:

  • 父模块pom文件的配置:packaging类型必须是pom

<groupId>com.imooc.coupon</goupId>
<artifactId>imooc-coupon</artifactId>
<packaging>pom</package>
  • 聚合子模块:使用modules标签(在父模块中申明需要聚合的子模块)
 <modules>
   <module>coupon-common<module>
   <module>coupon-template</module>
   <module>coupon-settlement</module>
   <module>coupon-distribution</module>
 </modules>
  • 父模块统一管理依赖包:使用dependencyManagement标签
<dependencyManagement>
 <dependencies>
   <dependency>
     <groupId>org.springframework.could</goupId>
     <artifactId>spring-cloud-dependencies</artifactId>
     <version>${spring-cloud.version}</version>
     <type>pom</type>
     <scope>import</scope>
   </dependency>
 </dependencies>
</dependencyManagement>

子模块的pom.xml需要注意的点:

  • 子模块需要在pom中声明父模块:使用parent标签
<parent>
  <groupId>imooc-coupon</goupId>
  <artifactId>com.imooc.coupon</artifactId>
  <version></version>
</parent>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值