【Maven】—— 模块拆分、聚合、继承、属性、私服

一、分模块开发和设计

将每一层都拆为一个模块,然后修改对应的配置文件

将每一个模块进行编译【compile】,安装【install】到本地仓库

在需要使用到地方,在 pom.xml 文件中以依赖的形式导入

  • SSM_pojo 拆分

    • 新建模块【不需要添加模板】

    • 拷贝原始项目中对应的相关内容到 SSM_pojo 模块中

      • 实体类

      • 配置文件(无)

  • SSM_mapper 拆分

    • 新建模块

    • 拷贝原始项目中对应的相关内容到 SSM_mapper 模块中

      • 数据访问层接口

      • 配置文件:保留与数据访问层相关配置文件(3个)

        • 注意:分页插件在配置中与 SqlSessionFactoryBean 绑定,需要保留

      • pom.xml:引入数据访问层相关坐标即可,删除 SpringMVC 相关坐标

        • spring

        • mybatis

        • spring 整合 mybatis

        • mysql

        • druid

        • pagehelper

        • 直接依赖 SSM_pojo (对 SSM_pojo 模块执行 install 指令,将其安装到本地仓库)

  • SSM_service 拆分

    • 新建项目

    • 拷贝原始项目中对应的相关内容到 SSM_service 模块中

      • 业务逻辑层接口与实现类

      • 配置文件:保留与数据访问层相关配置文件(1个)

      • pom.xml:引入数据访问层相关坐标即可,删除 SpringMVC 相关坐标

        • spring

        • junit

        • spring 整合 junit

        • 直接依赖 SSM_mapper(对 SSM_mapper 模块执行 install 指令,将其安装到本地仓库)

        • 间接依赖 SSM_pojo(由 SSM_mapper 模块负责依赖关系的建立)

      • 修改 service 模块 spring 核心配置文件名,添加模块名称,格式:applicationContext_service.xml

      • 修改 mapper模块 spring 核心配置文件名,添加模块名称,格式:applicationContext_mapper.xml

      • 修改单元测试引入的配置文件名称,由单个文件修改为多个文件

  • SSM_controller 拆分

    • 新建模块【使用 webapp 模板】

    • 拷贝原始项目中对应的相关内容到 SSM_controller 模块中

      • 界面层控制器类与相关设置类

      • 配置文件:保留与界面层相关配置文件(1个)、服务器相关配置文件(1个)

      • pom.xml:引入数据访问层相关坐标即可,删除 SpringMVC 相关坐标

        • spring

        • springmvc

        • jackson

        • servlet

        • tomcat 服务器插件

        • 直接依赖 SSM_service(对 SSM_service 模块执行 install 指令,将其安装到本地仓库)

        • 间接依赖 SSM_mapper、SSM_pojo

      • 修改 web.xml 配置文件中加载 spring 环境的配置文件名称,使用 “ * ” 通配符,加载所有 applicationContext_ 开始的配置文件

小结:

  • 模块中仅包含当前模块对应的功能类与配置文件

  • spring 核心配置根据功能模块不同进行独立制作

  • 当前模块所依赖的模块通过导入坐标的形式加入当前模块后才可以使用

  • web.xml 需要加载所有的 spring 核心配置文件

二、聚合 

将项目拆分为多个模块后,当其中某一模块发生修改更新,其他模块并未知道其已经更新,可能会导致出错 

解决方案:

添加一个模块来控制其他所有模块,运行此模块,其他的模块也会做出相应的操作,以此解决上述问题,称为聚合

新建项目 SSM【仅保留 pom.xml 文件】

<!--添加以下代码-->
<!--定义该模块用于进行构建管理-->
<packaging>pom</packaging>

<!--管理的工程列表-->
<modules>
    <!--具体的工程名称-->
    <module>../ssm_pojo</module>
    <module>../ssm_mapper</module>
    <module>../ssm_service</module>
    <module>../ssm_controller</module>
</modules>

注意:参与聚合操作的模块最终执行顺序与模块间的依赖关系有关,与配置顺序无关  

三、继承 

 在子工程中可能会重复使用到同一个依赖,若没有对这些依赖进行管理,可能会出现各个子工程同一个依赖的版本不一致,此时可以在父工程中对各个公共依赖进行版本管理,这样在整个工程中所有的依赖版本就统一了

在 SSM 项目的 pom.xml 中添加以下代码【父工程】  

<dependencyManagement>
    <dependencies>
    	<!--在此处写所有需要管理的依赖-->
    </dependencies>
</dependencyManagement>

在使用到相关依赖的模块中添加以下代码【子工程】  

<!--定义该工程的父工程-->
<parent>
	<groupId>org.example</groupId>
    <artifactId>ssm</artifactId>
    <!--填写父工程的 pom.xml 文件-->
    <relativePath>.../ssm/pom.xml</relativePath>
</parent>

<!--以下两个可以不写-->
<!--<groupId>com.qiuxuan</groupId>-->
<!--<version>1.0</version>-->
<!--以下两个不变-->
<artifactId>project-java</artifactId>
<packaging>jar</packaging>
【父工程】
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.2.5.RELEASE</version>
</dependency>

【子工程】
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
</dependency>

四、属性 

【定义自定义属性】
<properties>
	<springmvc.version>5.2.5</springmvc.version>
</properties>

【使用】
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${springmvc.version}</version>
</dependency>

【内置属性】
${basedir}
${version}

【setting 属性】
使用 Maven 配置文件 setting.xml 中的标签属性,用于动态配置
${settings.localRepository}

【Java系统属性】
${user.home}

系统属性查询方式
mvn help:system
${java.runtime.name}  =====   Java(TM) SE Runtime Environment

===============================================================================
System Properties
===============================================================================

java.runtime.name=Java(TM) SE Runtime Environment
......

【环境变量属性】
使用 Maven 配置文件 setting.xml 中的标签属性,用于动态配置
${env.JAVA_HOME}

环境变量属性查询方式
mvn help:system

===============================================================================
Environment Variables
===============================================================================

GATEWAY_VM_OPTIONS=D:\Software\ja-netfilter-all\vmoptions\gateway.vmoptions
......

五、私服 

【Nexus】

下载地址:Downloadicon-default.png?t=N7T8https://help.sonatype.com/repomanager3/product-information/download

安装并在 bin 目录下使用命令行启动 nexus /run nexus

访问 http://localhost:8081/

端口号可以在 etc 目录下修改

仓库分类

  • 宿主仓库 hosted

    • 保存无法从中央仓库获取的资源

      • 自主研发

      • 第三方非开源项目

  • 代理仓库 proxy

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

  • 仓库组 group

    • 将若干个仓库组成一个群组,简化配置

    • 仓库组不能保存资源,属于设计型仓库

idea 环境中资源下载与上传  

maven 的 setting.xml 文件中添加 

<servers>	
    <!--配置访问Nexus服务器的权限-->
    <server>
        <id>qiuxuan-release</id>
        <username>admin</username>
        <password>admin</password>
    <server>
    <server>
        <id>qiuxuan-snapshots</id>
        <username>admin</username>
        <password>admin</password>
   <server>
</server>
        
<mirrors>
	<!--配置具体的仓库的下载镜像-->
	<mirror>
		<!--此镜像的唯一标识符,用来区分不同的 mirror 元素-->
		<id>nexus-aliyun</id>
		<!--对哪种仓库进行镜像,简单说就是替代那个仓库-->
		<mirrorOf>central</mirrorOf>
		<!--镜像名称-->
		<name>Nexus aliyun</name>
		<!--镜像 URL-->
		<url>http://maven.aliyun.com/nexus/content/groups/public</url>
	</mirror>
	<!--自定义私服-->
	<mirror>
		<!--此镜像的唯一标识符,用来区分不同的 mirror 元素-->
		<id>nexus-qiuxuan</id>
		<!--对哪种仓库进行镜像,简单说就是替代那个仓库-->
		<mirrorOf>*</mirrorOf>
		<!--镜像 URL-->
		<url>http://localhost:8081/repository/maven-public/</url>
	</mirror>
</mirrors>

【在服务器中添加两个仓库】  

【将两个仓库添加到仓库组中】

【IDEA 配置上传组件】  

<!--发布配置-->
<distributionManagement>
    <repository>
        <id>qiuxuan-release</id>
        <url>http://localhost:8081/repository/qiuxuan-release/</url>
    </repository>
    <snapshotRepository>
        <id>qiuxuan-snapshots</id>
        <url>http://localhost:8081/repository/qiuxuan-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

【发布资源到私服】  

mvn deploy

一  叶  知  秋,奥  妙  玄  心

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qx_java_1024

祝老板生意兴隆,财源广进!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值