古语有云: 万恶淫为首,百善孝为先。 我们后辈当自勉。
上一章简单介绍了 Maven整合SSM项目(七),如果没有看过,请观看上一章
一. 聚合项目
在传统的项目中,通常采用MVC的设计思想, 将项目分成 pojo, dao,service,action,utils 等 包进行开发,pojo包放置实体类,dao放置数据库,service层处理业务,action进行控制,utils是使用的工具类, 项目很小时是可以的, 当项目过大时,这样就很不好操作了。 Maven 可以将其进行分开, 将pojo 层处理成一个模块,将dao 处理成一个 模块, 将 service层处理成一个模块,将action 处理成一个模块,将utils 处理成一个依赖, 各个 模块之间可以 自顶而下形式依赖, 就是一个父项目里面包含若干个子项目, 在运行的时候,只需要运行父项目即可。 这叫做聚合,父与子之间的聚合。 在父项目里面添加相应的依赖, 子项目因为继承于父项目,所以包含了相应的依赖, 各个 子项目就不需要单独添加依赖了, 但子项目之间的依赖还是要添加的。
我们在创建Maven 项目的时候, 有一个 Maven Module ,
在选择 packaging 时,有一个 pom 类型
这在 聚合项目中就可以用得到了。
二. 创建 SSM 类型的聚合项目
二.一 模块目录结构
目录结构是这样的
有一个父的项目, 名称叫 SSMParent, 里面包含一个工具模块 CommonUtils 还有一个正式的项目 SSMOA, 在SSMOA里面包含 SSMPojo,SSMDao,SSMService,SSMWeb 等模块。 其中,SSMDao依赖于 SSMPojo, SSMService依赖于 SSMDao, SSMWeb依赖于SSMService.
例子,仍然采用上一章节的例子。
二.二 创建SSMParent 父模块
文件—>新建----其他–>选择 Maven Project
点击下一步, 工作空间为eclipse的工作空间
点击完成后, 填写相应的信息, 注意 packaging 选择的是 pom 类型。
点击确定,则 SSMParent 模块创建完成。
pom.xml 显示
<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.yjl</groupId>
<artifactId>SSMParent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
</project>
二.三 创建 CommonUtils 子模块
选中 SSMParent 项目, 进行新建—>其他—>选择 Maven Module
下一步, 填写 Module Name的值 为 CommonUtils ,
点击完成 ,
工具类嘛,都是 jar 类型。 父模块会被自动选择
CommonUtils 模块创建完成 。
这个时候,再观察 SSMParent 模块的 pom.xml 文件
<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.yjl</groupId>
<artifactId>SSMParent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<!--多了一行-->
<module>CommonUtils</module>
</modules>
</project>
观察 SSMParent 项目目录, 发现已经把 CommonUtils 项目包含了进去。
二.四 创建 SSMOA 子模块
选中 SSMParent 项目, 进行新建—>其他—>选择 Maven Module
下一步, 填写 Module Name 的值为 SSMOA
点击完成
因为 SSMOA 下面,还有 pojo 等模块, 所以 packaging 的类型为 pom 类型。
创建 SSMOA 模块完成。
这个时候,再观察 SSMParent 的pom.xml 文件, 添加了一个 module 为SSMOA的模块。
<modules>
<module>CommonUtils</module>
<module>SSMOA</module>
</modules>
SSMParent 的目录结构也添加了 SSMOA
二.五 创建SSMPojo 子模块
选中SSMOA, 注意是OA, 进行新建—>其他—>选择Maven Module
下一步, 填写Module Name 的值为 SSMPojo
点击完成, 选择packaging 为jar类型
SSMPojo 子模块完成 。
这个时候,观察 SSMOA的pom.xml 文件,发现多了一个 Module
<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>
<parent>
<groupId>com.yjl</groupId>
<artifactId>SSMParent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>SSMOA</artifactId>
<packaging>pom</packaging>
<modules>
<module>SSMPojo</module>
</modules>
</project>
观察 SSMParent 的目录结构,
二.六 创建 SSMDao 子模块
选中SSMOA, 注意还是OA, 进行新建—>其他—>选择 Maven Module—>填写 Module Name 为SSMDao
packaging 仍然 是 jar 类型
SSMDao 子模块创建完成 。
观察 SSMOA的 pom.xml 文件,发现多了一个 SSMDao
<modules>
<module>SSMPojo</module>
<module>SSMDao</module>
</modules>
观察 SSMParent 的目录,
二.七 创建SSMService 子模块
选中SSMOA, 注意还是OA, 进行新建—>其他—>选择 Maven Module—>填写 Module Name 为SSMService
packaging 仍然是 jar 类型
SSMService 子模块创建完成 。
观察 SSMOA的 pom.xml 文件,发现多了一个 SSMService
<modules>
<module>SSMPojo</module>
<module>SSMDao</module>
<module>SSMService</module>
</modules>
观察 SSMParent 的目录,
二.八 创建 SSMWeb 子模块
选中SSMOA, 注意还是OA, 进行新建—>其他—>选择 Maven Module—>填写 Module Name 为SSMWeb
注意,这个时候 web了, packaging的类型就是 war了。
SSMWeb 子模块创建完成。
选中 SSMWeb 项目, 右键 Java EE Tools——>Generate Deployment Descriptor Stub, 系统便会自动创建 web.xml 文件了。
观察 SSMOA的 pom.xml 文件,发现多了一个 SSMWeb
<modules>
<module>SSMPojo</module>
<module>SSMDao</module>
<module>SSMService</module>
<module>SSMWeb</module>
</modules>
观察 SSMParent 的目录,
二.九 给 SSMParent 模块添加依赖和插件信息
选中 SSMParent, 在 pom.xml 中添加相应的依赖信息和插件信息。
依赖与上一章节的依赖一致,插入信息和resources 也与上一章节的一致。
这里就不重复添加了。
二.十 给 CommounUtils 添加工具包
选中 CommounUtils ,可以在里面添加各种 工具包,我们写的, 就是以前放置在 utils包下面的内容。
这里没有相应的工具类,不填写内容。
二.十一 给 SSMPojo 添加相应的代码
选中SSMPojo, 将上一章节的 User.java 和 UserExample.java 放置到这里面, 就是以前放置在 pojo包下面的内容。
观察 SSMParent项目, 发现在里面也会自动同步相应的代码信息。
二.十二 给 SSMDao 添加相应的代码
选中 SSMDao, 将上一章节的 UserMapper.java 和UserMapper.xml 放置到这里面来, 就是以前放置在 mapper包下面的内容。
User.java 类没有识别,需要在 SSMDao里面添加 SSMPojo的依赖。
找到 pom.xml ,添加相应的依赖
保存之后, SSMDao的错误便没有了,说明 dao项目引用 pojo项目 成功。
二.十三 给 SSMService 添加相应的代码
选中 SSMService, 将上一章节的 UserService.java 和UserServiceImpl.xml 放置到这里面来, 就是以前放置在service和 service.impl 包下面的内容。
UserService 类没有识别,需要在 SSMService里面添加 SSMDao的依赖。
找到 pom.xml ,添加相应的依赖
保存之后, SSMService的错误便没有了,说明 service项目引用 dao项目 成功。
二.十四 给SSMWeb 添加相应的代码
选中 SSMWeb ,将上一章节的 UserAction 放置到这里面来,就是以前放置在 action包下面的内容。
需要添加 SSMService的依赖
有图片
同时,还需要把上一章节的配置文件也放置该SSMWeb项目下的 src/main/resources 下面。
还有webapp 下面的内容也要放置进来
二.十五 测试运行
选中 SSMParent 项目, 右键 运行方式 —>Maven Build , 输入命令 : clean tomcat7:run
控制台没有报错。
输入网址: http://localhost:8026/ssm/user/toLogin
页面显示:
点击各个按钮,效果与上一章节是一样的,这儿就不继续贴图了。
说明,聚合成功。
二.十六 SSMParent 项目中的 pom.xml 文件 版本控制
在SSMParent项目中, pom.xml 中众多的依赖, 包括 包含 Spring的依赖, MyBatis的依赖 当修改版本号时,由 5.2.4.Final 变成其他的,如 5.2.5.Final 的时候,需要全部改变。 可以定义成一个变量,只需要修改那个变量的值即可。
在 pom.xml 中,在依赖之前 使用 <properties > 标签进行控制。
<properties>
<springframework.version>4.2.4.RELEASE</springframework.version>
<mybatis.version>3.5.1</mybatis.version>
</properties>
在下面的 依赖标签里面, 就可以用 springframework.version 来代替相应的版本号了。
以前是:
<!-- spring web依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<!-- spring-aspects依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
现在就变成了
<!-- spring web依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${springframework.version}</version>
</dependency>
<!-- spring-aspects依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${springframework.version}</version>
</dependency>
MyBatis 也是这样的效果。
以前是:
<!-- mybatis的依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
现在是:
<!-- mybatis的依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
最好将所有的常用的框架的版本号 都定义成一个变量,这样会很方便维护的。
MySQL的驱动, junit, 日志 log4j 都可以将版本号定义成相应的变量。
谢谢!!!