1.新建模块
在同级目录下建立模块
new module-->maven -->组名com.itheima
名称--ssm_pojo-->放置在同级别目录下
2.拷贝原始项目中对应的相关内容(实体类)到ssm_pojo中
domain包全表拷贝
3.配置文件 不做修改
# 由于实体类的API全是idea自带,故不去修改配置
4.compile:编译
测试编译是否通过
1.新建模块
在同级目录下建立模块
new module-->maven -->组名com.itheima
名称--ssm_dao-->放置在同级别目录下
2.拷贝原始项目中对应的相关内容到ssm_dao中
* 数据层接口
* 配置文件:保留与数据层相关配置文件3个
* 注意:分页插件在配置中与SqlSessionFactoryBear绑定,需要保留
3.配置文件pom.xml 引入数据层相关坐标即可,删除springmvc相关坐标
*spring
*mybatis
*spring整合mybatis
*mysql
*druid
*pagehelper
*导入资源文件=>直接依赖ssm_pojo,需要对ssm_pojo模块执行install指令,将其安装到本地仓库
4.compile:编译
(编译要保证仓库有对应的资源)
测试编译是否通过(需要先对ssm_pojo模块执行install指令),否则仓库里找不到
1.新建模块
在同级目录下建立模块
new module-->maven -->组名com.itheima
名称--ssm_service-->放置在同级别目录下
2.拷贝原始项目中对应的相关内容到ssm_service中
业务层接口与实现类(xxxService和xxxServiceImpl)
保留与数据层相关配置
3.配置文件 pom.xml 引入数据层相关坐标即可,删除springmvc相关坐标
*spring
*junit
*spring整合junit
*直接依赖ssm_dao(对ssm_dao模块执行install指令,将其安装到本地仓库,在导入依赖)
*间接依赖ssm_pojo(由ssm_dao模块负责依赖关系建立)
4.compile:编译
测试编译是否通过
5.其他
1.修改service模块的spring核心配置文件名,添加模块名称,格式:applicationContext-service.xml
2.修改dao模块的spring核心配置文件名,添加模块名称,格式:applicationContext-dao.xml
3.修改单元测试引入的配置文件名,由单个文件修改为多个文件
1.新建模块
在同级目录下建立模块
new module-->maven (由于是表现层需要选择模板webapp) -->组名com.itheima
名称--ssm_control-->放置在同级别目录下
2.拷贝原始项目中对应的相关内容到ssm_control中
表现层控制器类与相关设置类(controller和异常相关)
配置文件:保留与表现层相关的配置文件,服务器相关配置文件
3.配置文件 pom.xml 引入数据层相关坐标即可,删除springmvc相关坐标
*spring
*springmvc
*jackson
*servlet
*tomcat服务器插件
*直接依赖ssm_service(对ssm_service模块执行install指令,将其安装到本地仓库,在导入依赖)
*间接依赖ssm_pojo和ssm_pojo
4.compile:编译
测试编译是否通过
修改web.xml配置文件中加载spring环境的配置文件名称.使用*通配,加载所有的applicationContext-开始的配置文件
1.模块中仅包含当前模块对应的功能类与配置
2.spring核心配置根据模块功能不同进行独立制作
3.当前模块所依赖的模块通过导入坐标的形式加入当前模块后才可以使用
4.web.xml需加载所有的spring核心配置文件
多模块构建维护
多模块构建维护
多个模块全部 install到了本地仓库
其中一个更新或损坏,会导致其他与他依赖的功能无法运行
解决方法:
定义一个工程进行统一维护管理,
功能:对管理范围内的模块,进行统一操作
执行顺序
<packaging>war</packaging>
默认打包为jar文件,声明为war,则打包为war文件
聚合
作用:聚合用于快速构建内maven工程,一次性构建多个项目/模块
<packaging>pompackaging>
<modules>
<module>../ssm_controllermodule>
<module>../ssm_servicemodule>
<module>../ssm_daomodule>
<module>../ssm_pojomodule>
modules>
注意事项:参与聚合操作的模块最终执行顺序与模块间的依赖关系有关,与配置顺序无关
作用:方便进行批量的项目打包等操作
注意事项:参与聚合操作的模块最终执行顺序与模块间的依赖关系有关,与配置顺序无关
(线性依赖)
同级别的则与配置顺序有关(即非线性依赖)
packaging 默认是jar形式(所有的资源文件都是以jar包形式呈现的)
pom是专门做聚合工程的
war是web工程
起因:各个模块所依赖的配置文件未必同步与兼容
模块依赖关系维护
统一管理子项目的资源
继承
作用:通过继承可以实现在子过程中沿用父类中的配置
* maven中的继承与java中的继承相似,在子过程中配置继承关系
<parent>
<groupId>com.itheimagroupId>
<artifactId>ssmartifactId>
<version>1.0-SNAPSHOTversion>
<relativePath>../ssm/pom.xmlrelativePath>
<artifactId>ssm_controlartifactId>
<packaging>warpackaging>
parent>
在父工程中定义依赖管理
!-- 声明此处进行依赖管理-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.itheimagroupId>
<artifactId>ssm_pojoartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
<dependency>
<groupId>com.itheimagroupId>
<artifactId>ssm_daoartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
<dependency>
<groupId>com.itheimagroupId>
<artifactId>ssm_serviceartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.1.9.RELEASEversion>
dependency>
<dependencies>
<dependencyManagement>
在每一个子工程中定义依赖关系,无需声明依赖版本,版本参照父工程中依赖的版本
<dependencies>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
dependency>
dependencies>
继承的资源
作用:
** 聚合用于快速构建项目
** 继承用于快速匹配
相同点:
**聚合和继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一pom文件中
** 聚合与继承均属于设计型模块,并无实际内容
不同点:
** 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
** 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己
可继承的资源:
子项目必须继承的资源
dependencies
plugins
子项目可选择继承的资源
dependencyManagement : 工程中一般用于统一子项目的依赖版本
pluginManagement
不可继承的资源
artifactld
1.版本更改 不全面,有遗漏,导致部分版本未能更新
2.版本配置有冲突
定义【每个项目的父工程必须导入一下三个属性】
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
<属性名称>属性值属性名称>
properties>
作用:等同于定义变量,方便统一维护
定义格式
<properties>
<spring.version>5.1.9.RELEASEspring.version>
<junit.version>4.12junit.version>
properties>
调用格式
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>com.itheimagroupId>
<artifactId>ssm_pojoartifactId>
<version>${version}version>
dependency>
<dependency>
<groupId>com.itheimagroupId>
<artifactId>ssm_daoartifactId>
<version>${version}version>
dependency>
<dependency>
<groupId>com.itheimagroupId>
<artifactId>ssm_serviceartifactId>
<version>${version}version>
作用:使用maven内置属性,快速配置
调用格式
${basedir}
${version}
作用:使用Maven配置文件setting.xml中的标签属性,用于动态配置
调用格式
${settings.localRepository}
作用:读取Java系统属性
调用格式
${user.home}
系统属性查询方式
mvn help:system
作用:使用Maven配置文件setting.xml中的标签属性,用于动态配置
调用格式
${env.JAVA_HOME}
环境变量属性查询方式
mvn help:system
属性:简化我们的配置过程
定义**[每个项目的父工程必须导入一下三个属性]**
<properties>
编译编码
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
使用JDK1.8版本
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
properties>
在父工程中配置
<properties>
<spring.version>5.1.9.RELEASEspring.version>
<jdbc.url>jdbc:mysql://192.168.93.139:3306/db777jdbc.rrl>
...
properties>
pluginManagement>
<resources>
<resource>
<directory>${project.basedir}/src/mian/resourcesdirectory>
<filtering>truefiltering>
resource>
resources>
<resources>
<resource>
<directory>${project.basedir}/src/test/resourcesdirectory>
<filtering>truefiltering>
resource>
resources>
build>
调用
jdbc.url=${jdbc.url}
测试:
在install成功后,再去仓库查看配置文件,是否加载成功
多环境兼容
适应多种环境
定义
<profiles>
<profile>
<id>pro_envid>
<properties>
<jdbc.url>jdbc:mysql://192.168.93.139:3306/db777jdbc.url>
properties>
<activation>
<activeByDefault>trueactiveByDefault>
activation>
profile>
<profile>
<id>dep_envid>
<properties>
<jdbc.url>jdbc:mysql://192.168.93.149:3306/db777jdbc.url>
properties>
profile>
profiles>
使用
install 没有指定使用哪一个配置文件 查看仓库的配置文件发现没有加载,还是jdbc.url=${jdbc.url} 没有解析出来
启动install时指定用哪一个
配置启动的指令:
installl -P dep_env //指定开发环境
检查仓库的配置文件jdbc.url=的值 是否已经改变
作用:
加载指定环境配置
调用格式:
在idea的窗口输入
mvn 指令 –P 环境定义id
如:
mvn install –P pro_env
- mvn 指令 -D skipTests 或 -DskipTests=true
- 属性跳过 maven.test.skip
- mvn 指令 -Dmaven.test.skip=true
注意事项:
执行的指令生命周期必须包含测试环节
如将test指令禁止
<plugin>
<artifactId>maven-surefire-pluginartifactId>
<version>2.22.1version>
<configuration>
<skipTests>trueskipTests>
<includes>
<include>**/User*Test.javainclude>
includes>
<excludes>
<exclude>**/User*TestCase.javaexclude>
excludes>
configuration>
plugin>
mvn clean -X package 输出完整的错误信息
需求:小范围内资源共享
Nexus是Sonatype公司的一款maven私服产品
在安装目录下通过命令启动
nexus /run nexus
// 或者 nexus.exe /run nexus
//后缀可以省略
访问服务器
http:localhost:8081
修改基础配置信息
安装路径下bin目录中nexus.vmoptions文件中保存有nexus服务器启动的配置信息,如默认占有的内存空间
安装路径下etc目录中的nexus.properties文件保存有nexus基础配置信息,例如默认访问端口8081
直接图形化操作上传(第三方资源)
注意事项:创建的仓库是什么类型,一般要声明上传的资源的类型
如创建的是release类型仓库,则上传的文件选择SNAPSHOT会报错
如果上传的文件不声明类型,该软件则不会处理
<servers>
<server>
<id>heima-releaseid>
<username>adminusername>
<password>adminpassword>
server>
<server>
<id>heima-snapshotsid>
<username>adminusername>
<password>adminpassword>
server>
servers>
配置本地仓库资源来源(setting.xml)
<mirrors>
<mirror>
<id>nexus-heimaid>
<mirrorOf>*mirrorOf>
<url>http://localhost:8081/repository/maven-public/url>
mirror>
mirrors>
再将对应的maven下的cof文件夹下的setting.xml替换一下,保持一致
配置当前项目访问私服上传资源的保存位置pom.xml
<distributionManagement>
<repository>
<id>heima-releaseid>
<url>http://localhost:8081/repository/heima-release/url>
repository>
<snapshotRepository>
<id>heima-snapshotsid>
<url>http://localhost:8081/repository/heima-snapshots/url>
snapshotRepository>
distributionManagement>
ame>admin
admin
- 配置本地仓库资源来源(setting.xml)
```xml
nexus-heima
*
http://localhost:8081/repository/maven-public/
再将对应的maven下的cof文件夹下的setting.xml替换一下,保持一致
配置当前项目访问私服上传资源的保存位置pom.xml
<distributionManagement>
<repository>
<id>heima-releaseid>
<url>http://localhost:8081/repository/heima-release/url>
repository>
<snapshotRepository>
<id>heima-snapshotsid>
<url>http://localhost:8081/repository/heima-snapshots/url>
snapshotRepository>
distributionManagement>