Skip to content

七、Maven高级

一、分模块开发与设计

1、ssm_pojo拆分

详细信息
  • 新建模块
  • 拷贝原始项目中对应的相关内容到ssm_pojo模块中
    • 实体类(User)
    • 配置文件(无)

2、ssm_dao拆分

详细信息
  • 新建模块
  • 拷贝原始项目中对应的相关内容到ssm_dao模块中
    • 数据层接口(UserDao)
    • 配置文件:保留与数据层相关配置文件(3个)
      • 注意:分页插件在配置中与·SqlSessionFactoryBean·绑定,需要保留
    • pom.xml:引入数据层相关坐标即可,删除springmvc相关坐标
      • spring
      • mybatis
      • spring整合mybatis
      • mysql
      • druid
      • pagehelper
      • 直接依赖ssm_pojo(对ssm_pojo模块执行install指令,将其安装到本地仓库)

3、ssm_service

详细信息
  • 新建模块
  • 拷贝原始项目中对应的相关内容到ssm_service模块中
    • 业务层接口与实现类(UserServiceUserServicelmpl)
    • 配置文件:保留与数据层相关配置文件(1个)
    • pom.xml:引入数据层相关坐标即可,删除springmvc相关坐标
      • spring
      • junit
      • spring整合junit
      • 直接依赖ssm_dao(对ssmdao模块执行install指令,将其安装到本地仓库)
      • 间接依赖ssm_pojo(由ssm_dao模块负责依赖关系的建立)
    • 修改service模块spring核心配置文件名,添加模块名称,格式:applicationContext-service.xml
    • 修改dao模块spring核心配置文件名,添加模块名称,格式:applicationContext-dao.xml
    • 修改单元测试引入的配置文件名称,由单个文件修改为多个文件

4、ssm_control拆分

详细信息
  • 新建模块(使用webapp模板)
  • 拷贝原始项目中对应的相关内容到ssm_controller模块中
    • 表现层控制器类与相关设置类(UserController、异常相关…)
    • 配置文件:保留与表现层相关配置文件(1个)、服务器相关配置文件(1个)
    • pom.xml:引入数据层相关坐标即可,删除springmvc相关坐标
      • spring
      • springmvc
      • jackson
      • servlet
      • tomcat服务器插件
      • 直接依赖ssm_service(对ssm_service模块执行install指令,将其安装到本地仓库)
      • 间接依赖ssm_dao、ssm_pojo
  • 修改web.xml配置文件中加载spring环境的配置文件名称,使用*通配,加载所有applicationContext-开始的配置文件

二、聚合

多模块构建维护


  • 作用:聚合用于快速构建maven工程,一次性构建多个项目/模块。

  • 制作方式:

    • 创建一个空模块,打包类型定义为pom

      xml
      <packaging>pom</packaging>
    • 定义当前模块进行构建操作时关联的其他模块名称

      xml
      <modules>
      	<module>../ssm controller</module>
      	<module>../ssm service</module>
      	<module>../ssm dao</module>
      	<module>../ssm pojo</module>
      </modules>
    • 注意事项:参与聚合操作的模块最终执行顺序与模块间的依赖关系有关,与配置顺序无关

三、继承

1、继承

  • 作用:通过继承可以实现在子工程中沿用父工程中的配置

    • maven中的继承与iava中的继承相似,在子工程中配置继承关系
  • 制作方式:

    • 在子工程中声明其父工程坐标与对应的位置

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

2、继承依赖定义

在父工程中定义依赖管理

xml
<!--声明此处进行依赖管理-->
<dependencyManagement>
	<!--具体的依赖-->
	<dependencies>
		<!--spring环境-->
		<dependency>
			<groupId>org.springframework</groupId>
             <artifactId>spring-context</artifactId>
			<version>5.1.9.RELEASE</version>
		</dependency>
	<dependencies>
<dependencyManagement>

3、继承依赖使用

在子工程中定义依赖关系,无需声明依赖版本,版本参照父工程中依赖的版本

xml
<dependencies>
	<!--spring环境-->
	<dependency>
		<groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
	</dependency>
</dependencies>
groupld 项目组ID,项目坐标的核心元素
version 项目版本,项目坐标的核心因素
description 项目的描述信息
organization 项目的组织信息
inceptionYear 项目的创始年份
url 项目的URL地址
developers 项目的开发者信息
contributors 项目的贡献者信息
distributionManagement项目的部署配置
issueManagement 项目的缺陷跟踪系统信息
ciManagement 项目的持续集成系统信息
scm 项目的版本控制系统西溪
malilingLists 项目的邮件列表信息
properties 自定义的Maven属性
dependencies 项目的依赖配置
dependencyManagement 项目的依赖管理配置
repositories 项目的仓库配置
build 包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等
reporting 包括项目的报告输出目录配置、报告插件配置等

四、属性

1、属性类别

提示

  1. 自定义属性
  2. 内置属性
  3. Setting属性
  4. Java系统属性
  5. 环境变量属性

(1)自定义属性

  • 作用

    • 等同于定义变量,方便统一维护
  • 定义格式

    xml
    <!--定义自定义属性-->
    <properties>
    	<spring.version>5.1.9.RELEASE</spring.version>
        <junit.version>4.12</junit.version>
    </properties>

    调用格式

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

(2)Setting属性

  • 作用

  • 使用Maven配置文件setting.xml中的标签属性,用于动态配置

  • 调用格式

    xml
    ${settings.localRepository}

(3)Java系统属性

  • 作用

    • 读取Java系统属性
  • 调用格式

    ${user.home}
  • 系统属性查询方式

    bash
    mvn help:system

(4)环境变量属性

  • 作用

    • 使用Maven配置文件setting.xml中的标签属性,用于动态配置
  • 调用格式

    ${env.JAVA HOME}
  • 环境变量属性查询方式

    bash
    mvn help:system

五、版本管理

1、工程版本区分

2、工程版本


(1)SNAPSHOT(快照版本)

介绍

  • 项目开发过程中,为方便团队成员合作,解决模块间相互依赖和时时更新的问题,开发者对每个模块进行构建的时候,输出的临时性版本叫快照版本(测试阶段版本)
  • 快照版本会随着开发的进展不断更新

(2)RELEASE(发布版本)

介绍

项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构件文件是稳定的,即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本

六、资源配置

1、配置文件引用pom属性

  • 作用

    • 在任意配置文件中加载pom文件中定义的属性
  • 调用格式

    xml
    ${jdbc.url}
  • 开启配置文件加载pom属性

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

七、多环境开发配置

xml
<!--创建多环境-->
<profiles>
	<!--定义具体的环境:生产环境-->
	<profile>
		<!--定义环境对应的唯一名称-->
		<id>pro_env</id>
		<!--定义生产环境中专用的属性值-->
		<properties>
			<jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url>
        </properties>
        <!--设置默认启动-->
		<activation>
			<activeByDefault>true</activeByDefault>
        </activation>
    </profile>
	<!--定义具体的环境:开发环境-->
	<profile>
		<id>dev_env</id>
        <!--定义开发环境中专用的属性值-->
		<properties>
			<jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db</jdbc.url>
        </properties>
	</profile>
</profiles>

提示

在编辑配置中选择Maven,并设置它的working directorycommand line

  • working directory:希望运行的项目

  • command line

    bash
    install -P pro_env

八、跳过测试了解

1、跳过测试环节的应用场景

  • 整体模块功能未开发
  • 模块中某个功能未开发完毕
  • 单个功能更新调试导致其他功能失败
  • 快速打包
  • ......

2、使用方式


(1)方式一

提示

点击即可


(2)方式二

提示

命令方式



(3)方式三

提示

父项目的pom.xml文件配置

xml
<!--配置跳过测试-->
<pluginManagement>
	<plugins>
        <plugin>
        	 <artifactId>maven-surefire-plugin</artifactId>					<version>2.22.1</version>
             <configuration>
            	<!--设置跳过测试-->
            	<skipTests>true</skipTests>
            </configuration>
            
            <!--包含指定的用例-->
            <includes>
            	<include></include>
            </includes>
            
              <!--排除指定的用例-->
			<excludes>
				<exclude></exclude>
            </excludes>
            
            
        </plugin>
	</plugins>
</pluginManagement>

九、私服

1、Nexus介绍

2、Nexus安装、启动与配置


(1)启动服务器(命令行启动)

提示

在nexus的bin文件夹运行

bash
nexus.exe /run nexus

(2)访问服务器

http://localhost:8081

访问服务器(默认端口:8081)

(3)修改基础配置信息

安装路径下etc目录中nexus-default.properties文件保存有nexus基础配置信息,例如默认访问端口

(4)修改服务器运行配置信息

安装路径下bin目录中nexus.vmoptions文件保存有nexus服务器启动对应的配置信息,例如默认占用内存空间