Maven 分模块开发

Maven 分模块开发

在此之前,你的需要明白什么是 maven 的继承和 maven 的聚合。

何为 maven 的继承?

继承是为了消除重复,如果将dao、service、web 分开创建独立的工程则每个工程的 pom.xml 文件中的内容存在重复,比如:设置编译版本、锁定 spring 的版本等,可以将这些重复的内容配置提取出来在父工程的 pom.xml 中定义。

何为 maven 的聚合?

项目开发通常是分组分模块开发,每个模块开发完成要运行整个工程需要将每个模块聚合在一起运行,比如:dao、service、web 三个工程最终会打一个独立的 war 运行。满足一次运行,构建多模块的要求

下面我通过一个 ssh 的 web 工程 的分模块开发来学习一些基本操作和项目结构。

ssh_parent 父模块

1. 打开 eclipse,file->new->Maven->Maven Project, 点击 next.

在这里插入图片描述

2. 输入坐标

在这里插入图片描述
ps: 这里的 Packaging 类型为 pom,你可理解为是一个父工程的意思,点击 finish

3. 创建好父工程后,我们习惯把子工程共同依赖的 jar 包或者该工程的所有 jar 包都编写在 父工程的pom.xml 中。
   例如该 ssh 工程,把工程所依赖的 jar 包都书写在了该 pom.xml 中。

ssh-dao 子模块

1. 同样是 file->new->Maven,但子模块接下来不是选择 Maven Project 了,选择 Maven Module,点击 next.

在这里插入图片描述

2. 输入字工程名字。并选择父工程 ssh-parent,点击 next

在这里插入图片描述

3. 输入 Group Id,并选择 Packaging 类型为 jar,点击finish.

在这里插入图片描述
刚创建好的子工程 ssh-dao 的 pom.xml 如下显示:声明了父工程
在这里插入图片描述

4. 编写 dao 层的代码和文件在相应位置,并实行 install 命令,打成 jar 包到本地仓库供 service 层使用

在这里插入图片描述
ps: 其实在一般开发中也把 entity 作为一个子模块来单独开发。此 ssh 只是一个简单实例,entity 实体类少,就直接放在 dao 层。

ssh-service 子模块

ssh-service 子模块的创建和 ssh-dao 一样,创建好之后把对应的代码写在该模块对应位置即可!

ssh-web 子模块

同上,不再展开。这里有一点需要注意的是,该子模块的 Packaging 类型为 war
在这里插入图片描述
另外,该工程下的 web.xml 文件的 spring 监听器修改成如下写法:

  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>classpath*:applicationContext-*.xml</param-value>
  </context-param>

模块聚合

编写子工程完成后,打开父工程的 pom.xml,其中有一段代码
在这里插入图片描述
其实module配置的是路径,此路径是相对父工程的 pom.xml 文件找子工程的 pom.xml 文件的路径。聚合会根据这段代码聚合!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Maven模块开发是一种将项目按照功能或层次进行拆开发方式。在这种开发模式下,通常会将项目为多个模块,每个模块都具有特定的功能和职责。 一个典型的模块开发项目中,通常会存在一个或多个API模块,负责定义接口和公共的数据结构;以及一个或多个实现模块,负责具体的功能实现。API模块通常只提供接口定义和公共的数据对象,而实现模块则根据API模块中的定义进行具体的功能实现。 在使用Maven引入API模块后,我们之所以能够自动使用该API模块的接口实现模块,是因为Maven具有依赖管理的功能。 当我们在引入API模块的时候,Maven会自动解析并下载该模块的依赖关系。这些依赖关系可能包括该API模块所需要的其他模块,比如实现模块。 当我们在代码中使用该API模块的接口时,Maven会自动将其对应的实现模块引入到项目中。这是因为Maven在构建项目时,会根据依赖关系进行自动的模块解析和加载。 通过这种方式,我们可以方便地使用和调用API模块的接口实现,而无需手动引入和配置相应的实现模块。 总结来说,Maven模块开发中,引入API模块后能够自动使用该API的接口实现模块,是因为Maven具有依赖管理功能,能够自动解析和加载模块之间的依赖关系。这使得我们可以方便地使用API模块的接口实现,提高了开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值