Maven高级


typora-copy-images-to: assets


Maven高级

今日菜单

  1. 分模块开发与设计-视频01-04
  2. 聚合,继承,属性-视频05-07
  3. 版本管理-视频08
  4. 多环境开发配置和跳过测试-视频09-11
  5. 私服-视频12-15

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e4OVt3Km-1656222779376)(assets/image-20200812102402173.png)]

学习目标

  • 能够使用SSM框架集成为Maven项目
  • 能够运用聚合与继承(多模块开发)
  • 能够运用版本控制
  • 能够使用Maven进行单元测试
  • 能够通过Profile构建多环境开发
  • 能够使用Maven属性管理

1)分模块开发与设计(重点)

1.1)工程模块划分-视频01

在现实生活中,汽车厂家进行汽车生产时,由于整个生产过程非常复杂和繁琐,工作量非常大,所以车场都会将整个汽车的部件分开生产,最终再将生产好的部件进行组装,形成一台完整的汽车。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QjGMYamh-1656222779377)(assets/图片12.png)]

按照下图对项目进行模块的划分:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jRzweAOz-1656222779378)(assets\1592058795771.png)]

好处:降低耦合,方便团队协作

1.2)ssm_pojo拆分

  1. 新建模块:ssm_pojo

  2. 拷贝原始项目中对应的相关内容到ssm_pojo模块中:实体类(User)

1.3)ssm_dao拆分-视频02

  1. 新建模块:ssm_dao,拷贝原始项目中的下列相关内容到ssm_dao模块中

  2. pom.xml:

    • 保留数据层相关坐标:spring, mybatis, spring 整合mybatis, mysql, druid, pagehelper
    • 删除springmvc相关坐标
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    
    	<dependencies>  
           <!--spring环境-->
           <!--spring环境-->
           <!--spring环境-->
           <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-context</artifactId>
               <version>5.1.9.RELEASE</version>
           </dependency>
       
       
           <!--mybatis环境-->
           <!--mybatis环境-->
           <!--mybatis环境-->
           <dependency>
               <groupId>org.mybatis</groupId>
               <artifactId>mybatis</artifactId>
               <version>3.5.3</version>
           </dependency>
           <!--mysql环境-->
           <dependency>
               <groupId>mysql</groupId>
               <artifactId>mysql-connector-java</artifactId>
               <version>5.1.47</version>
           </dependency>
           <!--spring整合jdbc-->
           <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-jdbc</artifactId>
               <version>5.1.9.RELEASE</version>
           </dependency>
           <!--spring整合mybatis-->
           <dependency>
               <groupId>org.mybatis</groupId>
               <artifactId>mybatis-spring</artifactId>
               <version>2.0.3</version>
           </dependency>
           <!--druid连接池-->
           <dependency>
               <groupId>com.alibaba</groupId>
               <artifactId>druid</artifactId>
               <version>1.1.16</version>
           </dependency>
           <!--分页插件坐标-->
           <dependency>
               <groupId>com.github.pagehelper</groupId>
               <artifactId>pagehelper</artifactId>
               <version>5.1.2</version>
           </dependency>
       </dependencies>
    
  3. 添加ssm_pojo依赖

    • 由于User类被拆分到ssm_pojo模块中,因此要在dao模块中使用User,必须引入ssm_pojo模块

      <!--导入资源文件pojo-->
       <dependency>
        <groupId>com.itheima</groupId>
           <artifactId>ssm_pojo</artifactId>
           <version>1.0-SNAPSHOT</version>
       </dependency>
      
    • 对ssm_pojo模块执行install指令,将其安装到本地仓库
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OeFDwLdg-1656222779378)(assets/image-20200910221327763.png)]

    • mvn install执行过程

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5zZ8vLnP-1656222779379)(assets/image-20200912155833054.png)]

  4. 数据层接口(UserDao.java)

  5. 复制src\main\resources\com\itheima\dao\UserDao.xml

  6. 复制applicationContext.xml,jdbc.properties:

    保留数据源DruidDataSource、SqlSessionFactoryBean、MapperScannerConfigurer配置

    <!--开启bean注解扫描-->
    <context:component-scan base-package="com.itheima"/>
    
    <!--加载properties文件-->
    <context:property-placeholder location="classpath*:jdbc.properties"/>
    
    <!--数据源-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    
    <!--整合mybatis到spring中-->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="typeAliasesPackage" value="com.itheima.domain"/>
        <!--分页插件-->
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <props>
                            <prop key="helperDialect">mysql</prop>
                            <prop key="reasonable">true</prop>
                        </props>
                    </property>
                </bean>
            </array>
        </property>
    </bean>
    
    <!--映射扫描-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.itheima.dao"/>
    </bean>
    
  7. 对ssm_dao模块执行compile,看到BUILD SUCCESS说明拆分成功

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ALK1BSp2-1656222779379)(assets/image-20210426183058834.png)]

1.4)ssm_service拆分-视频03

  1. 新建模块:ssm_service

  2. 拷贝原始项目中对应的相关内容到ssm_service模块中

  • pom.xml:

    • 删除springmvc, MyBatis相关坐标

    • 保留业务层坐标spring,junit,spring整合junit

      <dependencies>
      
          <!--spring环境-->
          <!--spring环境-->
          <!--spring环境-->
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-context</artifactId>
              <version>5.1.9.RELEASE</version>
          </dependency>
      
      
          <!--其他组件-->
          <!--其他组件-->
          <!--其他组件-->
          <!--junit单元测试-->
          <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.12</version>
          </dependency>
          <!--spring整合junit-->
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-test</artifactId>
              <version>5.1.9.RELEASE</version>
          </dependency>
      </dependencies>
      
    • ssm_service模块直接依赖ssm_dao

      由于UserDao类被拆分到ssm_dao模块中,因此要在service模块中使用UserDao必须引入ssm_dao

      <!--导入资源文件dao-->
      <dependency>
          <groupId>com.itheima</groupId>
          <artifactId>ssm_dao</artifactId>
          <version>1.0-SNAPSHOT</version>
      </dependency>
      
      #对ssm_dao模块执行install指令,将其安装到本地仓库
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yag0awa6-1656222779380)(assets/image-20200911114842611.png)]

    • 由于ssm_dao模块已经依赖ssm_pojo,因此无需在ssm_service模块中再次引入ssm_pojo

      image-20210113193448945
  • 业务层接口与实现类(UserService、UserServiceImpl)

  • Spring配置文件:保留事务管理配置

    <!--开启bean注解扫描-->
    <context:component-scan base-package="com.itheima"/>
    
    <!--开启注解式事务-->
    <tx:annotation-driven transaction-manager="txManager"/>
    
    <!--事务管理器-->
    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    
  • 修改service模块spring核心配置文件名,文件名中添加模块名称:applicationContext-service.xml

  • 修改dao模块spring核心配置文件名,文件名中添加模块名称:applicationContext-dao.xml

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cr2kVjqZ-1656222779380)(assets/image-20200911115757161.png)]

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

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = {
            "classpath:applicationContext-service.xml",
            "classpath:applicationContext-dao.xml"})
    public class UserServiceTest {
    
        @Autowired
        private UserService userService;
    
        @Test
        public void testSave() {
            User user = new User();
            user.setUserName("Jock");
            user.setPassword("root");
            user.setRealName("Jockme");
            user.setGender(1);
            user.setBirthday(new Date(333333000000L));
    
            userService.save(user);
        }
    }
    
    #注意事项:ssm_dao模块的任何内容有变化后,必须重新对ssm_dao模块执行install
    

1.5)ssm_controller拆分

  1. 新建模块:ssm_controller

  2. 打开pom.xml文件,添加打包方式配置

    <packaging>war</packaging>
    
  3. 拷贝原始项目中对应的相关内容到ssm_controller模块中

    pom.xml:引入表现层相关坐标即可spring, springmvc, jackson, servlet, tomcat服务器插件

      <dependencies>
        <!--springmvc环境-->
        <!--springmvc环境-->
        <!--springmvc环境-->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>5.1.9.RELEASE</version>
        </dependency>
        <!--jackson相关坐标-->
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.9.0</version>
        </dependency>
        <!--servlet环境-->
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
          <scope>provided</scope>
        </dependency>
      
      </dependencies>
      
      <build>
        <!--设置插件-->
        <plugins>
          <!--具体的插件配置-->
          <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.1</version>
            <configuration>
              <port>80</port>
              <path>/</path>
            </configuration>
          </plugin>
        </plugins>
      </build>
    
  • ssm_controller模块直接依赖ssm_service

    • 在ssm_controller模块的pom.xml中添加

      <dependency>
          <groupId>com.itheima</groupId>
      <artifactId>ssm_service</artifactId>
          <version>1.0-SNAPSHOT</version>
      </dependency>
      
    • 对ssm_service模块执行install指令,将其安装到本地仓库

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PSu0H2Sj-1656222779381)(assets/image-20200911115700118.png)]

  • 间接依赖ssm_pojo

  • 表现层控制器类与相关设置类(UserController、异常相关……)

  • spring-mvc.xml配置文件

    <mvc:annotation-driven/>
    
    <context:component-scan base-package="com.itheima.controller"/>
    
  • 修改web.xml配置文件中加载spring环境的配置文件名称,易错点:classpath*

    #使用*,会加载依赖的所有jar包中的applicationContext-开始的配置文件
    #包含ssm_dao.jar, ssm_service.jar中的
    #applicationContext-service.xml文件
    #applicationContext-dao.xml文件
    classpath*:applicationContext-*.xml
    
    <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath*:applicationContext-*.xml</param-value>
    </context-param>
    
    <!--启动服务器时,通过监听器加载spring运行环境-->
    <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    
    <filter>
      <filter-name>CharacterEncodingFilter</filter-name>
      <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
      <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
      </init-param>
    </filter>
    <filter-mapping>
      <filter-name>CharacterEncodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <servlet>
      <servlet-name>DispatcherServlet</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:spring-mvc.xml</param-value>
      </init-param>
    </servlet>
    <servlet-mapping>
      <servlet-name>DispatcherServlet</servlet-name>
      <url-pattern>/</url-pattern>
    </servlet-mapping>
    
    #注意事项:修改ssm_service, ssm_dao模块的applicationContext-*.xml后,必须重新对ssm_service, ssm_dao模块执行install
    

1.6)分模块开发注意事项

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

  • 当前模块所依赖的模块通过导入坐标的形式引入

    <dependency>
      <groupId>com.itheima</groupId>
      <artifactId>ssm_service</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    
  • 配置文件修改后,必须重新对模块执行install

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

    <!--
    applicationContext-service.xml
    applicationContext-dao.xml
    -->
    <context-param>
    	<param-name>contextConfigLocation</param-name>
    	<param-value>classpath*:applicationContext-*.xml</param-value>
    </context-param>
    
    <!--启动服务器时,通过监听器加载spring运行环境-->
    <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    

2)聚合(重点)

2.1)多模块构建维护-视频05

分模块开发后,每次要运行ssm_controller都需要对ssm_pojo, ssm_dao, ssm_service执行install,非常的麻烦,如何解决呢?

1592059171938

2.2)聚合

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

  • 制作方式:

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

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

      <modules>
          <module>../ssm_controller</module>
          <module>../ssm_service</module>
          <module>../ssm_dao</module>
          <module>../ssm_pojo</module>
      </modules>
      

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

  • 完整pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.itheima</groupId>
        <artifactId>ssm</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!--定义该工程用于进行构建管理-->
        <packaging>pom</packaging>
    
        <!--管理的工程列表-->
        <modules>
            <!--具体的工程名称-->
            <module>../ssm_controller</module>
            <module>../ssm_service</module>
            <module>../ssm_dao</module>
            <module>../ssm_pojo</module>
        </modules>
    
    </project>
    
  • 执行instal打包所有module:ssm_pojo, ssm_dao, ssm_service, ssm_cocntroller

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dDjlCxTu-1656222779381)(assets/image-20200911134230110.png)]

  • 原来需要install4次的操作,现在只需要install ssm模块即可

3)继承(重点)

3.1)模块依赖关系维护

多个module引用了相同的坐标,为了避免重复编写版本号和不同版本的兼容性问题。

1592059337530

3.2)继承概念

  • 作用:通过继承可以实现在子工程中沿用父工程中的配置
  • maven中的继承与java中的继承相似,在子工程中(子类中使用extends标识父类)配置继承关系
  • 优势:统一管理子模块依赖的坐标版本,便于后期升级框架版本

3.3)继承依赖定义

  1. 在父工程ssm模块中定义依赖管理,使用标签

    <!--声明此处进行依赖管理-->
    <dependencyManagement>
        <!--具体的依赖-->
        <dependencies>
            <!--spring环境-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.1.9.RELEASE</version>
            </dependency>
        <dependencies>
    <dependencyManagement>
    
  2. 在所有子工程:ssm_pojo, ssm_dao, ssm_service, ssm_controller中声明其父工程坐标与对应的位置 = Java中的extends

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

3.4)继承依赖使用

在所有子工程ssm_pojo, ssm_dao, ssm_service, ssm_controller中引入依赖:

无需声明依赖版本,版本号继承自父工程中依赖的版本

<dependencies>
    <!--spring环境-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
    </dependency>
</dependencies>

3.5)继承的资源(了解)

groupId:项目组ID,项目坐标的核心元素

version:项目版本,项目坐标的核心因素

description:项目的描述信息

organization:项目的组织信息

inceptionYear:项目的创始年份

url:项目的URL地址

developers:项目的开发者信息

contributors:项目的贡献者信息

distributionManagement:项目的部署配置

issueManagement:项目的缺陷跟踪系统信息

ciManagement:项目的持续集成系统信息

scm:项目的版本控制系统西溪

malilingLists:项目的邮件列表信息

properties:自定义的Maven属性

dependencies:项目的依赖配置

dependencyManagement:项目的依赖管理配置

repositories:项目的仓库配置

build:包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等

reporting:包括项目的报告输出目录配置、报告插件配置等

3.6)继承与聚合对比(了解)

作用:

  • 聚合用于快速构建项目

  • 继承用于快速配置

相同点:

  • 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中

  • 聚合与继承均属于设计型模块,并无实际的模块内容

不同点:

  • 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些

  • 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

4)属性

4.1)版本统一的重要性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rbQZvWla-1656222779382)(assets\1592059609949.png)]

4.2)属性类别

1.自定义属性

2.内置属性

3.Setting属性

4.Java系统属性

5.环境变量属性

4.3)自定义属性(重点)

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

定义格式:在父工程ssm中

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

调用格式:${spring.version}

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

4.4)内置属性(了解)

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

调用格式:

#常用
${version} = ${project.version}
<!--添加自己的工程模块依赖-->
<dependency>
    <groupId>com.itheima</groupId>
    <artifactId>ssm_pojo</artifactId>
    <version>${project.version}</version>
</dependency>

4.5)Setting属性(了解)

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

调用格式:

${settings.localRepository} 

4.6)Java系统属性(了解)

作用:读取Java系统属性

调用格式

${user.home} 

系统属性查询方式

mvn help:system 

4.7)环境变量属性(了解)

作用:读取操作系统中的环境变量

调用格式

${env.JAVA_HOME} 

环境变量属性查询方式

mvn help:system 

5)版本管理(了解)

5.1)工程版本区分-视频08

1592060021315

5.2)工程版本类别

  • SNAPSHOT(快照版本)

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

    • 快照版本会随着开发的进展不断更新

  • RELEASE(发布版本)

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

5.3)工程版本号约定

约定规范:

  • <主版本>.<次版本>.<增量版本>.<里程碑版本>

  • 主版本:表示项目重大架构的变更,如:spring5相较于spring4的迭代

  • 次版本:表示有较大的功能增加和变化,或者全面系统地修复漏洞

  • 增量版本:表示有重大漏洞的修复

  • 里程碑版本:表明一个版本的里程碑(版本内部)。这样的版本同下一个正式版本相比,相对来说不是很稳定,有待更多的测试

范例:

  • 5.1.9.RELEASE
  • Spring版本定义:https://mvnrepository.com/artifact/org.springframework/spring-context

6)资源配置(了解)

6.1)资源配置多文件维护-视频09

将项目的所有资源配置信息比如jdbc.properties统一放到pom.xml文件中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PCg4qMk0-1656222779382)(assets\1592060128683.png)]

6.2)配置文件引用pom属性

  • 作用:在任意配置文件中加载pom文件中定义的属性

  • 配置方式:父工程ssm模块的pom.xml

    <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.url>
    </properties>
    

    jdbc.properties中调用格式:

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=${jdbc.url}
    jdbc.username=root
    jdbc.password=itheima
    
  • 父工程ssm模块中开启配置文件加载pom属性

    <!--配置资源文件对应的信息-->
    <build>
        <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>
    </build>
    
  • 执行mvn install后打开ssm_dao.jar查看jdbc.properties中的值

7)多环境开发配置

7.1)多环境兼容-视频10

开发环境(development):开发环境是程序猿们专门用于开发的服务器

测试环境(testing):测试同学干活的环境,一般会由测试同学自己来部署,然后在此环境进行测试

生产环境(production):项目上线后正式提供对外服务的环境

更细划分:
fat: 功能验收环境
uat(User Acceptance Test):用户验收环境
仿真环境

三个环境也可以说是系统开发的三个阶段:开发->测试->上线,其中生产环境也就是通常说的真实环境。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YrSxPjPy-1656222779382)(assets\1592060250502.png)]

7.2)多环境配置

父工程ssm模块的pom.xml中配置多个环境:

<!--创建多环境-->
<profiles> 
    <!--定义具体的环境:生产环境-->
    <profile>
        <!--定义环境对应的唯一名称-->
        <id>pro_env</id>
        <!--定义环境中专用的属性值-->
        <properties>
            <jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url>
        </properties>
    </profile>

     <!--定义具体的环境:开发环境-->
        <profile>
            <id>dep_env</id>
            <properties>
                <jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db</jdbc.url>
            </properties>
        </profile>

        <!--定义具体的环境:测试环境-->
        <profile>
            <id>test_env</id>
            <properties>
                <jdbc.url>jdbc:mysql://127.3.3.3:3306/ssm_db</jdbc.url>
            </properties>
        </profile>
</profiles>

jdbc.properties中调用格式:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=${jdbc.url}
jdbc.username=root
jdbc.password=itheima

7.3)第一种:命令行加载指定环境(了解)

作用:加载指定环境配置

调用格式:

#格式:mvn 指令 -P 环境定义id

#在idea中Alt+F12打开控制台执行如下命令
mvn install -P dep_env

7.4)第二种:设置默认环境

<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>

7.5)第三种:快捷指定方法(常用)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TTmKlKYg-1656222779383)(assets/image-20200911223720927.png)]

8)跳过测试(了解)

8.1)跳过测试环节的应用场景-视频11

整体模块功能未开发

模块中某个功能未开发完毕

单个功能更新调试导致其他功能失败

快速打包

……

8.2)使用命令跳过测试

使用命令行

mvn install -D skipTests

8.3)在idea中跳过测试(常用)

1592060441318

8.4)使用配置跳过测试

<skipTests>true</skipTests><!--设置跳过测试-->
<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.1</version>
    <configuration>
        <skipTests>true</skipTests><!--设置跳过测试-->
        <includes> <!--包含指定的测试用例-->
            <include>**/Question*Test.java</include>
        </includes>
        <excludes><!--排除指定的测试用例-->
            <exclude>**/User*Test.java</exclude>
        </excludes>
    </configuration>
</plugin>

9)私服(运维)

9.1)私服的必要性-视频12

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lDKvx118-1656222779383)(assets\1592060518477.png)]

9.2)Nexus简介

Nexus是Sonatype公司的一款maven私服产品

下载地址:https://help.sonatype.com/repomanager3/download

9.3)安装Nexus

  1. 解压安装包:安装目录中不能有中文路径和空格
  • 修改基础配置信息,etc目录中nexus-default.properties文件保存有基础配置信息,例如默认访问端口

    # nexus\nexus-3.20.1-01\etc\nexus-default.properties
    
    application-port=8081
    application-host=0.0.0.0
    nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
    nexus-context-path=/
    
  1. 修改服务器运行配置信息
  • 安装路径下bin目录中nexus.vmoptions文件保存有nexus服务器启动对应的配置,例如默认占用内存空间

    # nexus\nexus-3.20.1-01\bin\nexus.vmoptions
    
    -Xms512m
    -Xmx512m
    -XX:MaxDirectMemorySize=2703m
    -XX:+UnlockDiagnosticVMOptions
    -XX:+LogVMOutput
    -XX:LogFile=../sonatype-work/nexus3/log/jvm.log
    -XX:-OmitStackTraceInFastThrow
    -Djava.net.preferIPv4Stack=true
    
  1. 启动服务器(命令行启动)

    nexus.exe /run nexus
    
  2. 访问服务器(默认端口:8081)http://localhost:8081

9.4)私服中的仓库-视频13

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sur6TQWG-1656222779384)(assets\1592060611850.png)]

9.5)仓库分类

  1. 宿主仓库hosted :保存无法从外网中央仓库获取的资源,比如如下两种资源

    • 自主研发

    • 第三方非开源项目

      image-20200913095847488
  2. 代理仓库proxy:通过nexus访问其他公共仓库,例如中央仓库

image-20200913095858371
  1. 仓库组group

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

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

      image-20200913095913925

9.6)手动上传组件

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

  • 保存的位置(宿主仓库)

  • 资源文件

  • 对应坐标

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hzf6tE62-1656222779384)(assets/image-20200913100141646.png)]

9.7)idea访问私服与组件上传-视频14

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IL6zi0ew-1656222779385)(assets\1592060719086.png)]

9.8)idea访问私服

1.配置本地仓库访问私服的权限(setting.xml):C:\Users\your-username.m2\settings.xml

  • 快捷方式:直接在idea的中Maven窗口打开本机maven配置文件

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PZhsMK6a-1656222779385)(assets/image-20210113195913472.png)]

<servers>
    <server>
        <id>heima-release</id>
        <username>admin</username>
        <password>admin</password>
    </server>
    <server>
        <id>heima-snapshots</id>
        <username>admin</username>
        <password>admin</password>
    </server>
</servers>

2.配置本地仓库资源来源(setting.xml)

<mirrors>
    <mirror>
        <id>nexus-heima</id>
        <mirrorOf>*</mirrorOf>
        <url>http://localhost:8081/repository/maven-public/</url>
    </mirror>
</mirrors>

9.9)idea组件上传-视频15

配置当前项目访问私服上传资源的保存位置(pom.xml)

<distributionManagement>
    <repository>
        <id>heima-release</id>
        <url>http://localhost:8081/repository/heima-release/</url>
    </repository>
    <snapshotRepository>
        <id>heima-snapshots</id>
        <url>http://localhost:8081/repository/heima-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

两种上传方式:

  • 发布资源到私服命令

    mvn deploy
    
  • 使用idea的maven插件
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jMXKIF4F-1656222779385)(assets/image-20200812153315429.png)]

上传过程如下所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S7oJgDfj-1656222779385)(assets/image-20200816151507017.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值