目录
1.分模块开发
将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享。
案例:拆分一下这个SSM整合案例
①创建maven模块
demo项目下的pom.xml文件(主要看一下依赖)
<dependencies><!--依赖domain运行--><dependency><groupId>org.example</groupId><artifactId>demo_pojo</artifactId><version>1.0-SNAPSHOT</version></dependency><!--依赖dao运行--><dependency><groupId>org.example</groupId><artifactId>demo_dao</artifactId><version>1.0-SNAPSHOT</version></dependency><!--其它依赖-->...
</dependencies>
demo_pojo项目下的pom.xml文件(关注groupId和artifactId)
<groupId>org.example</groupId>
<artifactId>demo_pojo</artifactId>
<version>1.0-SNAPSHOT</version>
demo_dao项目下的pom.xml文件(关注groupId和artifactId、依赖)
<groupId>org.example</groupId>
<artifactId>demo_dao</artifactId>
<version>1.0-SNAPSHOT</version><dependencies><!--依赖domain运行--><dependency><groupId>org.example</groupId><artifactId>demo_pojo</artifactId><version>1.0-SNAPSHOT</version></dependency> <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.13</version></dependency>
</dependencies>
②通过install指令安装到本地仓库
2.依赖管理
依赖具有传递性,因而demo项目下的pom.xml文件可以简化。
<dependencies><!--依赖dao运行--><dependency><groupId>org.example</groupId><artifactId>demo_dao</artifactId><version>1.0-SNAPSHOT</version></dependency><!--其它依赖-->...
</dependencies>
可选依赖 -- 对外隐藏当前依赖的资源
<dependency><groupId>org.example</groupId><artifactId>demo_dao</artifactId><version>1.0-SNAPSHOT</version><optional>false</optional>
</dependency>
排除依赖 -- 排除当前依赖中的某个资源
<dependency><groupId>org.example</groupId><artifactId>demo_dao</artifactId><version>1.0-SNAPSHOT</version><exclusions><exclusion><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId></exclusion></exclusions>
</dependency>
3.聚合
聚合:将多个模块组织成一个整体,同时进行项目构建。
聚合工程:通常是一个不具有业务功能的 “空” 工程(有且仅有一个pom文件)
作用:当工程中某个模块发生更新时,必须保障工程中相关联的模块同步更新。
例:①创建一个demo_aggregate项目,设置打包类型为pom
<groupId>org.example</groupId>
<artifactId>demo_aggregate</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
②设置当前聚合工程所包含的子模块名称
<!--设置管理的模块名称-->
<modules><module>../demo</module><module>../demo_dao</module><module>../demo_pojo</module>
</modules>
4.继承
概念:继承描述的是两个工程间的关系,子工程可以继承父工程的配置信息,常见于依赖关系的继承。能够简化配置、减少版本冲突。
例:在上面聚合工程的基础上修改配置。
①提取一些公共性的依赖,放到在父工程demo_aggregate的pom.xml中
<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.0.10</version></dependency>...
</dependencies>
②在子工程demo、demo_dao和demo_pojo中配置当前工程依赖父工程
<parent><groupId>org.example</groupId><artifactId>demo_aggregate</artifactId><version>1.0-SNAPSHOT</version><relativePath>../demo_aggregate/pom.xml</relativePath>
</parent>
③在父工程demo_aggregate的pom.xml中配置子工程中可选的依赖关系
<dependencyManagement><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies>
</dependencyManagement>
在子工程demo中使用父工程中的可选依赖
仅需要配置<groupId>和<artifactId>,无需提供版本,版本由父工程统一提供。
<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency></dependencies>
5.属性
例1:在配置文件pom.xml中自定义属性,从而简化配置。
<!--定义属性-->
<properties><spring.version>6.0.10</spring.version>
</properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version><scope>test</scope></dependency>
</dependencies>
例2:资源文件引用属性。
①pom.xml文件,自定义属性,配置过滤器
<!--定义属性-->
<properties><jdbc.url>jdbc:mysql://localhost:3306/ssm_db</jdbc.url>
</properties><!--开启资源文件目录加载属性的过滤器-->
<build><resources><resource><directory>${project.basedir}/src/main/resources</directory><filtering>true</filtering></resource></resources>
</build>
②在资源中引用属性
/src/main/resources/jdbc.properties
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=${jdbc.url}
jdbc.username=root
jdbc.password=123456
6.版本管理
- SNAPSHOT(快照版本):项目开发过程中临时输出的版本,称为快照版本。
- RELEASE(发布版本):较为稳定的版本。
7.多环境开发
不同环境下,所需要的配置可能不同。
在demo_aggregate工程的pom.xml文件中配置多环境。
<profiles><!--开发环境--><profile><id>env_dep</id><properties><jdbc.url>jdbc:mysql://127.0.0.1:3306/ssm_db</jdbc.url></properties><!--设置是否为默认启动环境--><activation><activeByDefault>true</activeByDefault></activation></profile><!--生产环境--><profile><id>env_pro</id><properties><jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url></properties></profile><!--开发环境--><profile><id>env_test</id><properties><jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db</jdbc.url></properties></profile>
</profiles>
8.跳过测试
应用场景:①功能更新中且没有开发完毕。②快速打包
①快捷方式
②细粒度控制跳过测试
<plugins><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.19.1</version><configuration><skipTests>false</skipTests><!--排除不参与测试的内容--><excludes><exclude>**/BookServiceTest.java</exclude></excludes></configuration></plugin>
</plugins>
③maven指令
maven install -D skipTests