随笔 - 19  文章 - 0  评论 - 0  阅读 - 3564

Maven进阶

一. 分模块开发与设计

二. 依赖管理

  1. 依赖传递
  2. 可选依赖
  3. 排除依赖

三. 聚合与继承

  1. 聚合
  2. 继承

四. 属性管理

  1. 属性
  2. 版本管理

五. 多环境配置与应用

  1. 多环境开发
  2. 跳过测试

六. 私服

  1. 私服简介
  2. 私服仓库分类
  3. 资源上传与下载


1-1 分模块开发与设计
将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享

1-2分模块开发流程

  1. 创建Maven模块
  2. 书写模块代码
  3. 通过maven指令安装模块到本地仓库(install指令)


2-1 依赖管理

  • 依赖具有传递性

直接依赖:在当前项目中通过依赖配置建立的依赖关系
间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源

  • 依赖传递冲突问题

路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

2-2 可选依赖
可选依赖指对外隐藏当前所依赖的资源————不透明

 <dependency>
      <groupId>com.itheima</groupId>
      <artifactId>maven_04_dao</artifactId>
      <version>1.0-SNAPSHOT</version>
      <optional>false</optional>
    </dependency>

2-3 排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本————不需要

    <dependency>
      <groupId>com.itheima</groupId>
      <artifactId>maven_04_dao</artifactId>
      <version>1.0-SNAPSHOT</version>
      <!--排除依赖是隐藏当前资源对应的依赖关系-->
      <exclusions>
        <exclusion>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

提示:排除依赖资源仅指定GA即可,无需指定V


3-1 聚合
聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合
聚合工程:通常是一个不具有业务功能的“空”工程(有且仅有一个pom文件,相当于父工程
作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建
提示:当工程中某个模块发生更新(变更)时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题

  • 聚合工程开发
  1. 创建Maven模块,设置打包类型为pom
    <packaging>pom</packaging>

  2. 设置当前聚合工程所包含的子模块名称

 <modules>
        <module>../maven_02_ssm</module>
        <module>../maven_03_pojo</module>
        <module>../maven_04_dao</module>
    </modules>

3-2 继承
概念:继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
作用:1.简化配置 2.减少版本冲突

  • 继承关系
  1. 创建Maven模块,设置打包类型为pom
  2. 在父工程的pom文件中配置依赖关系(子工程将继承父工程中的依赖关系)
  3. 配置子工程中可选的依赖关系
 <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.16</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
  1. 在子工程中配置当前工程所继承的父工程
  <parent>
    <groupId>com.itheima</groupId>
    <artifactId>maven_01_parent</artifactId>
    <version>1.0-RELEASE</version>
    <relativePath>../maven_01_parent/pom.xml</relativePath>
  </parent>
  1. 在子工程中配置使用父工程中可选依赖的坐标
    <dependencies>
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
      </dependency>
    </dependencies>
  • 聚合与继承的区别
    作用
  1. 聚合用于快速构建项目
  2. 继承用于快速配置

相同点:

  1. 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
  2. 聚合与继承均属于设计型模块,并无实际的模块内容

不同点:

  1. 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
  2. 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己


4-1 属性
属性配置与使用

  1. 自定义属性:用于对依赖版本的统一管理

  2. 引用属性

资源文件引用属性

  1. 定义属性

  2. 配置文件中引用属性

  3. 开启资源文件目录加载属性的过滤器

  4. 配置maven打war包时,忽略web.xml检查


5-1 多环境开发
maven提供配置多种环境的设定,帮助开发者使用过程中快速切换环境

  1. 定义多环境
 <!--配置多环境-->
    <profiles>
        <!--开发环境-->
        <profile>
            <id>env_dep</id>
            <properties>
                <jdbc.url>jdbc:mysql://127.1.1.1:3306/db1</jdbc.url>
            </properties>
            <!--设定是否为默认启动环境-->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
    ...
    <profiles>
  1. 使用多环境(构建过程)

5-2 跳过测试
作用:1.功能更新中并且没有开发完毕 2.快速打包

  1. 跳过测试指令
  2. 细粒度控制跳过测试
    控制哪些测试类进行测试


6-1 私服简介
私服是一台独立的服务器,用于解决团队内部的资源共享与资源同步问题,使用Nexus演示

  1. Nexus安装与启动

6-2 私服仓库分类

6-3 资源上传与下载

  1. 本地仓库访问私服权限设置
    是在Maven的文件中的setting.xml进行配置
    D:\Program Files\Maven\apache-maven-3.6.1\conf\setting.xml
   <server>
        <id>itheima-snapshot</id>
        <username>admin</username>
        <password>123456</password>
    </server>
    <server>
        <id>itheima-release</id>
        <username>admin</username>
        <password>123456</password>
    </server>
  1. 本地仓库访问私服地址设置
<mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
    <!--     私服的访问路径 -->
    <mirror>
        <id>maven-public</id>
        <mirrorOf>*</mirrorOf>
        <url>http://localhost:8081/repository/maven-public/</url>
    </mirror>
  1. 工程上传到私服服务器设置
<!-- 在pom中配置当前工程保存在私服中的具体位置-->
    <distributionManagement>
        <repository>
            <id>itheima-release</id>
            <url>http://localhost:8081/repository/itheima-release/</url>
        </repository>
        <snapshotRepository>
            <id>itheima-snapshot</id>
            <url>http://localhost:8081/repository/itheima-snapshot/</url>
        </snapshotRepository>
    </distributionManagement>

项目发布命令
mvn deploy

posted on   云往前面飘  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2022-05-27 8.SparkSQL综合作业
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示