ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Maven学习——高级篇

2022-06-05 12:05:42  阅读:138  来源: 互联网

标签:学习 模块 仓库 配置 高级 Maven pom 版本 maven


Maven学习——高级篇

一、分模块开发与设计

  1. 工程模块与模块划分

image-20220602153708805

  1. 分模块开发
  • 模块中仅包含当前模块对应的功能类与配置文件
  • spring核心配置根据模块功能不同进行独立制作
  • 当前模块所依赖的模块通过导入坐标的形式加入当前模块后才可以使用
  • web.xml需要加载所有spring核心配置文件

二、聚合

  1. 多模块构建维护(实际工程开发中有些模块可能进行更新)

  2. 聚合的作用:通过建立一个聚合模块,该模块管理所有的工程模块,方便一次重新编译、更新

<!--ssm工程文件中的pom.xml-->
......
<project>
    <!--定义该工程用于进行构建管理-->
    <packaging>pom</packaging>
    <!--管理的工程列表-->
    <modules>
        <!--具体的工程名称-->
        <module>../ssm_pojo</module>
        <module>../ssm_dao</module>
        <module>../ssm_service</module>
        <module>../ssm_controller</module>
    </modules>
</project>
  1. 模块的类型
  • pom、war、jar

三、继承

  1. 模块依赖关系维护

image-20220602163239035

  1. 继承

(1)作用:通过继承实现在子工程中沿用父工程中的配置

(2)父工程pom.xml(ssm)

<!--声明此处进行依赖管理-->
<dependencyManagement>
    <dependencies>
    ...
    </dependencies>
</dependencyManagement>

(3)子工程pom.xml(ssm_pojo)

<!--定义该工程的父工程-->
<parent>
    <groupId>com.itheima</groupId>
    <artifactId>ssm</ artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--填写父工程的pom文件-->
    <relativePath>../ssm/pom.xml</relativePath>
</parent>

(4)聚合和继承小结

  • 作用:
    • 聚合用于快速构建项目
    • 继承用于快速配置
  • 相同点:
    • 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
    • 聚合与继承均属于设计型模块,并无实际的模块内容
  • 不同点:
    • 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
    • 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

四、属性

(1)属性类别:自定义属性

  • 作用:等同于定义变量,方便统一维护

  • 定义格式:

    <!--定义自定义属性-->
    <properties>
        <spring.version>5.1.9.RELEASE</spring.version>
        <junit.version>4.12</junit.version>
    </properties>
    
  • 调用格式:

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependeney>
    
    

(2)属性类别:内置属性

  • 作用:使用maven内置属性,快速配置

  • 调用格式:

    ${basedir}
    ${version}
    

(3)属性类别:Setting属性

  • 作用:使用Maven配置文件settings.xml中的标签属性,用于动态配置
  • 调用格式:
    ${settings.localRepository}

(4)系统属性

(5)环境变量属性

五、版本管理

(1)工程版本

  • SNAPSHOT(快照版本)
    • 项目开发过程中,为方便团队成员合作,解决模块间相互依赖和时时更新的问题,开发者对每个模块进行构建的时候,输出的临时性版本叫快照版本(测试阶段版本)
    • 快照版本会随着开发的进展不断更新
  • RELEASE(发布版本)
    • 项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构件文件是稳定的,即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本

(2)工程版本号约定

  • 约定规范:
    • <主版本>.<次版本>.<增量版本>.<里程碑版本>
    • 主版本:表示项目重大架构的变更,如: spring5相较于spring4的迭代
    • 次版本:表示有较大的功能增加和变化,或者全面系统地修复漏洞
    • 增量版本:表示有重大漏洞的修复
    • 里程碑版本:表明一个版本的里程碑(版本内部)。这样的版本同下一个正式版本相比,相对来说不是很稳定,有待更多的测试
  • 范例:
    • 5.1.9.RELEASE

六、资源配置

资源多文件配置

image-20220605083301264

配置文件引用pom属性

  • 作用
    • 在任意配置文件中加载pom文件中定义的属性
  • 调用格式
    • ${jdbc.url}
<!-―定义自定义属性-->
<properties>
    <spring.version>5.1.9.RELEASE</spring.version>	
    <junit.version>4.12</junit.version>
    <jdbc.url>jdbc:mysql://127.0.0.1:3306/ssm_db</jdbc.ur1>
</properties>

<build>
    <!--配置资源文件对应的信息-->
    <resources>
        <resource>
            <!--设定配置文件对应的位置目录,支持使用属性动态设定路径-->
            <directory>${project.basedir}/src/main/resources</directory>
            <!--开启对配置文件的资源加载过滤-->
            <filtering>true</filtering>
        </resource>
    <resources>
</build>

七、多环境开发配置

(1)多环境兼容

image-20220605084808886

<!--创建多环境-->
<profiles>
    <!--定义具体的环境:生产环境-->
    <profile>
        <!--定义环境对应的唯一名称-->
        <id>pro_env</id>
        <!--定义环境中换用的属性值-->
        <properties></properties>
        <!--设置默认启动-->
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <!--定义具体的环境:开发环境-->
    <profile>
        <id>dep_env</id>
        <properties></properties>
    </profile>
</profiles>

(2)加载指定环境

  • 作用
    • 加载指定环境配置
    • 调用格式
      mvn 指令 -P 环境定义id
    • 范例
      mvn install -P pro env

八、私服

(一)nexus服务器安装与启动

image-20220605092403870

(1)Nexus安装、启动与配置

image-20220605101824399

  • 修改基础配置信息
    • 安装路径下etc目录中nexus-default.properties文件保存有nexus基础配置信息,例如默认访问端口
  • 修改服务器运行配置信息
    • 安装路径下bin目录中nexus.vmoptions文件保存有nexus服务器启动对应的配置信息,例如默认占用内存空间

(2)私服资源获取

image-20220605094229734

(二)仓库分类与手动上传组件

(1)仓库分类

  • 宿主仓库hosted

    • 保存无法从中央仓库获取的资源
      • 自主研发
      • 第三方非开源项目

    image-20220605102443823

  • 代理仓库proxy

    • 代理远程仓库,通过nexus访问其他公共仓库,例如中央仓库
  • 仓库组group

    • 将若干个仓库组成一个群组,简化配置
    • 仓库组不能保存资源,属于设计型仓库

    image-20220605102622754

(2)资源上传

  • 上传资源时提供对应的信息

    • 保存的位置(宿主仓库)
    • 资源文件
    • 对应坐标

    image-20220605102753319

(三)本地仓库访问私服

  • IDEA环境中资源上传与下载

image-20220605103350745

  • 配置本地仓库访问私服的权限(maven库的settings.xml)
<!--配置访问服务器的权限,用户名密码-->
<servers>
    <server>
        <id>shine-maven-release</id>
        <username>admin</username>
        <password>admin</password>
    </server>
</servers>
  • 配置本地仓库资源来源(maven库的settings.xml)
<mirrors>
    <!--自定义私服-->
    <mirror>
    	<id>nexus-shine</id>
        <mirrorOf>*</mirrorOf>
        <url>http://localhost:8081/repository/maven-public/</url>
    </mirror>
</mirrors>

(四)IDEA访问私服与组件上传

  • 配置当前项目访问私服上传资源的保存位置(pom.xml)
<!--发布配置管理-->
<distributionManagement>
    <repository>
        <id>shine-maven-release</id>
        <url>http://localhost:8081/repository/shine-maven-release/</ur1>
	<repository>
    <snapshotRepository>
        <id>shine-maven-snapshots</id>
        <ur1>http://localhost:8081/repository/shine-maven-snapshots/</ur1>
	</snapshotRepository>
</distributionManagement>
  • 发布资源到私服:mvn deploy

标签:学习,模块,仓库,配置,高级,Maven,pom,版本,maven
来源: https://www.cnblogs.com/Shine-Gan/p/16343648.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有