typora-copy-images-to: assets
Maven高级
今日菜单
- 分模块开发与设计-视频01-04
- 聚合,继承,属性-视频05-07
- 版本管理-视频08
- 多环境开发配置和跳过测试-视频09-11
- 私服-视频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拆分
-
新建模块:ssm_pojo
-
拷贝原始项目中对应的相关内容到ssm_pojo模块中:实体类(User)
1.3)ssm_dao拆分-视频02
-
新建模块:ssm_dao,拷贝原始项目中的下列相关内容到ssm_dao模块中
-
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>
-
添加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)]
-
-
数据层接口(UserDao.java)
-
复制src\main\resources\com\itheima\dao\UserDao.xml
-
复制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>
-
对ssm_dao模块执行compile,看到BUILD SUCCESS说明拆分成功
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ALK1BSp2-1656222779379)(assets/image-20210426183058834.png)]
1.4)ssm_service拆分-视频03
-
新建模块:ssm_service
-
拷贝原始项目中对应的相关内容到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
-
-
业务层接口与实现类(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拆分
-
新建模块:ssm_controller
-
打开pom.xml文件,添加打包方式配置
<packaging>war</packaging>
-
拷贝原始项目中对应的相关内容到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,非常的麻烦,如何解决呢?
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引用了相同的坐标,为了避免重复编写版本号和不同版本的兼容性问题。
3.2)继承概念
- 作用:通过继承可以实现在子工程中沿用父工程中的配置
- maven中的继承与java中的继承相似,在子工程中(子类中使用extends标识父类)配置继承关系
- 优势:统一管理子模块依赖的坐标版本,便于后期升级框架版本
3.3)继承依赖定义
-
在父工程ssm模块中定义依赖管理,使用标签
<!--声明此处进行依赖管理--> <dependencyManagement> <!--具体的依赖--> <dependencies> <!--spring环境--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.9.RELEASE</version> </dependency> <dependencies> <dependencyManagement>
-
在所有子工程: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
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中跳过测试(常用)
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
- 解压安装包:安装目录中不能有中文路径和空格,
-
修改基础配置信息,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=/
- 修改服务器运行配置信息
-
安装路径下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
-
启动服务器(命令行启动)
nexus.exe /run nexus
-
访问服务器(默认端口:8081)http://localhost:8081
9.4)私服中的仓库-视频13
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sur6TQWG-1656222779384)(assets\1592060611850.png)]
9.5)仓库分类
-
宿主仓库hosted :保存无法从外网中央仓库获取的资源,比如如下两种资源
-
自主研发
-
第三方非开源项目
-
-
代理仓库proxy:通过nexus访问其他公共仓库,例如中央仓库
-
仓库组group
-
将若干个仓库组成一个群组,简化配置
-
仓库组不能保存资源,属于设计型仓库
-
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)]