Maven高级
分模块开发与设计_项目拆分
-
pojo
-
实体类
-
配置文件(无)
-
-
dao
-
数据层接口
-
配置文件:保留与数据层相关配置文件(3个):分页插件保留
-
pom.xml:引入数据层相关坐标即可,删除springmvc相关坐标
- spring
- mybatis
- spring整合mybatis
- mysql
- druid
- pagehelper
- 直接依赖pojo(对pojo执行install命令,将其安装到本地仓库)
-
-
service
- 业务层接口与实现类
- 配置文件:保留与数据层相关配置文件1个
- pom.xml:引入数据层相关坐标即可,删除springmvc相关坐标
- spring
- junit
- spring整合junit
- 直接依赖dao(install,安装到本地仓库)
- 间接依赖pojo(由dao依赖关系建立)
- 修改service模块spring核心配置文件名,添加模块名称,格式:applicationContext-service.xml
- 修改dao模块spring核心配置文件名,添加模块名称,格式:applicationContext-dao.xml
- 修改单元测试引入的配置文件名称,由单个文件修改为多个文件
-
controller
- 新建模块(使用wepapp模块)
- 表现层控制器类与相关设置类
- 配置文件:保留与表现层相关配置文件1个、服务器相关配置文件1个
- pom.xml:引入数据层相关坐标即可,删除springmvc相关坐标
- spring
- springmvc
- jackson
- servlet
- tomacat服务插件
- 直接依赖service(对service模块执行install指令,将其安装到本地仓库)
- 间接依赖dao、pojo
- 修改web.xml配置文件中加载spring环境的配置文件名称,使用*通配,加载所有applicationContext-开始的配置文件
小结
分模块开发
- 模块中仅包含当前模块对应的功能类与配置文件
- spring核心配置根据模块功能不同进行独立制作
- 当前模块所依赖的模块通过导入坐标的形式加入当前模块后才可以使用
- web.xml需要加载所有的spring核心配置文件
聚合
作用:聚合用于快速构建maven工程,一次性构建多个项目/模块,批量进行项目的打包等操作
制作方式:
- 创建一个空模块,打包类型定义为pom
- 定义当前模块进行构建操作时关联的其他模块名称
<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>
注意事项:参与聚合操作的模块最终执行顺序与模块间的依赖关系有关,与配置顺序无关
模块的类型
- pom、war、jar
继承
作用:
通过继承可以实现在子工程中沿用父工程中的配置,统一管理子项目的资源。与java中的继承相似,在子工程中配置继承关系
制作方式:
在子工程中声明其父工程坐标与对应的位置
继承依赖定义:
-
在父工程中定义依赖管理
<packaging>pom</packaging> <!--声明此处进行依赖管理--> <dependencyManagement> <!--具体的依赖--> <dependencices> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.9.RELEASE</version> </dependency> </dependencices> </dependencyManagement>
-
在子工程中定义依赖关系,无需声明依赖版本,版本参照父工程中依赖的版本
<parent> <groupId>com.itheima</groupId> <artifactId>springmvc_ssm</artifactId> <version>1.0-SNAPSHOT</version> </parent> <dependencices> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> </dependencices>
可继承的资源
- 子项目可以选的
- dependencyManagement:工作中一般用于统一子项目的依赖版本
- pluginManagement
- 子项目必定继承
- dependencies
- plugins
- 不可继承的资源
- artifactId
继承与聚合
- 作用
- 聚合用于快速构建项目
- 继承用于快速配置
- 相同点
- 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
- 聚合与继承均属于设计型模块,并无实际的模块内容
- 不同点
- 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
- 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己
属性
版本统一问题,设置属性可简化配置过程.6种属性:
-
定义自定义属性
- 定义格式
<!--定义自定义属性--> <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>
-
使用方式
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency>
-
内置属性:project:使用maven内置属性,快速配置
-
调用格式
${basedir} ${version}
-
-
系统属性:读取java系统属性
mvn help:system
-
调用格式
${user.home}
-
系统属性查询方式
mvn help:system
-
-
环境变量:使用maven配置文件setting.xml的标签属性,用于动态配置
mvn help:system
-
调用格式
${env.JAVA_HOME}
-
环境变量属性查询方式
mvn help:system
-
-
Setting属性:使用maven配置文件setting.xml的标签属性,用于动态配置,settings
-
调用格式
${settings.localRepository}
-
-
插件属性(指maven的插件)
定义【每个项目的父工程必须导入三个属性】
-
统一项目字符集:解决源代码中文乱码
-
编译:指定jdk版本
-
打包:指定jdk版本
<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>
版本管理
工程版本
- snapshop(快照版本)
- release(发布版本)
版本号约定
资源配置
资源加载属性值
配置文件引用pom属性:在任意配置文件中加载pom文件中定义的属性
-
调用格式
${jdbc.url}
-
开启配置文件加载pom属性
<!--配置资源文件对应的信息--> <resources> <resource> <!-- 在复制的资源文件中替换Maven的属性值 --> <directory>${project.basedir}/src/main/resources</directory> <filtering>true</filtering> </resource> </resources>
配置文件中读取pom属性值
- 在pom文件中设定配置文件路径
- 开启加载pom属性过滤功能
- 使用${属性名}格式引用pom属性
多环境开发配置
多环境配置
<!--创建多环境-->
<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>dep_env</id>
<properties>
<jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db</jdbc.url>
</properties>
</profile>
</profiles>
可使用build引入配置文件
<build>
<filters>
<filter>maven_prod.properties</filter>
</filters>
</build>
加载指定环境
-
调用格式
mvn 指令 –P 环境定义id
-
范例
mvn install –P pro_env
跳过测试
为什么要调过
- 整体模块功能未开发
- 模块中某个功能未开发完毕
- 单个功能更新调试导致其他功能失败
- 快速打包
- 。。。。。。。
方法:
-
mvn 指令 -D skipTests -DskipTests=true
-
mvn 指令 -Dmaven.test.skip=true
-
插件配置,maven-surefire-plugin
<plugin>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<skipTests>true</skipTests> <!--设置跳过测试-->
< includes> <!--包含指定的测试用例-->
<include>**/User*Test.java</include>
</includes>
<excludes> <!--排除指定的测试用例-->
<exclude>**/User*TestCase.java</exclude>
</excludes>
</configuration>
</plugin>
- 属性跳过 maven.test.skip
私服
仓库分类
仓库组:仓库的统一访问入口
- 宿主仓库:存储私服自己的jar包
- 代理仓库:代理请求转发到中央仓库,进行下载
访问私服配置(本地仓库访问私服)
-
配置本地仓库访问私服的权限(setting,xml)
<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>
-
配置本地仓库资源来源(setting,xml)
<mirrors> <mirror> <id>nexus-heima</id> <mirrorOf>*</mirrorOf> <url>http://localhost:8081/repository/maven-public/</url> </mirror> <mirrors>
-
上传jar到私服 mvn deploy
-
下载
<repositories> <repository> <id>nexus</id> <name>internal nexus repository</name> <url>http://repo.maven.apache.org/maven2</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
-
上传
<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>
-
jps:查看正在运行的java程序端口号
maven常用指令
- 输出完整错误信息
<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>
jps:查看正在运行的java程序端口号
maven常用指令
- 输出完整错误信息
- mvn clean -X package