maven搭建父子项目
- 父工程:父工程又称为父控制器,只是一个简单的工程,不能单独运行。作用是将子模块跟子工程聚合在一起。父控制器中的pom.xml配置,在子模块跟子工程中都可以被继承。
- 子工程:项目中创建的具有业务逻辑并且可以单独部署的的子模块称为子工程,一个项目中不同的子工程通过在pom.xml中添加同一个父工程而整合在一起。
- 子模块:提取出了一些子工程中通用的模块,做成jar包。当子工程需要使用的时候只要在pom.xml中添加依赖就好了。
创建父工程
- 打开eclipse,右键new->project,找到maven,选择maven Project点击next。

2、勾选创建一个简易工程Create a simple project

3、填写组名跟项目名,注意packaging一定要选择pom

4、父控制器创建好之后,删除自动生成的src文件夹

至此,父控制器就创建好了,让我们来看一下父控制器的pom.xml

只有一些简单的控制器的坐标信息以及打包方式。我们接着往下操作。
创建子模块
- 选中刚刚创建的maven项目右键->maven->New Maven Module Project

2、Module Name填写自己的子项目名,点击next

3、一般的jar工程选择maven-archetype-quickstart模板,web工程选择maven-archetype-webapp模板。选完之后next

4、Package里是系统默认生成的包,建议改成自己的包名,修改完点finish。

这样就创建好了一个子模块,如果要创建多个子模块重复上面的步骤即可。
这里我创建了3个jar工程1个web工程。如图

其中maven-web为web工程,可以发布到tomcat上进行部署启动。maven的父子工程也就创建完毕了。
此时我们可以再来看看父控制器的pom.xml发生了什么变化

我们发现父控制器的pom.xml中多出了modules标签。里面的各个module就是你所创建的子模块。就是这段modules标签,将各个子模块聚合到一起使之成为一个完整的大工程。
为什么要使用父子工程
相比于原先的创建项目方式,我认为有以下优点
- 父子工程对于模块的分离程度更高了
看一个例子:
按照以往的创建项目方式,一个maven项目就是一个大工程,一开始还能进行简单的测试编译,但是随着项目的不断变大和复杂化,后期再做改动则可能牵一发而动全身。但是使用父子工程,每个模块都是独立的,他们通过父控制器聚合在一起,这样当你要改动一个模块的时候你改动的也只是这一个模块而已,并不会影响其他的模块。
- 父子工程使代码更清晰,提高了重用
看一个例子:
父控制器的存在之一就是为了去除重复
一个项目存在多个模块,可能同时由多个人开发,比如abc3个模块,3个模块都是基于spring的那么3个开发都需要引入spring的核心jar包,这样就引入了3份,但是使用父子工程,则只需要在父工程中引入了,则子工程自动继承。
参考: https://blog.csdn.net/nvisalsd/article/details/80803277
http://blog.sina.com.cn/s/blog_15fb5fc170102y35w.html
maven搭建父子项目的更多相关文章
- 【maven】 在 MyEcplise上使用maven搭建Web项目
二.在My Ecplise上使用Maven搭建Web项目 1.新建一个maven项目 2.create一个简单的骨架 3.就像在ecplise中一样设置项目的以下配置 4.新创建的项目结构如下 ...
- Maven 搭建 SSM 项目 (oracle)
简单谈一下maven搭建 ssm 项目 (使用数据库oracle,比 mysql 难,所以这里谈一下) 在创建maven 的web项目时,常常会缺了main/java , main/test 两个文件 ...
- 如何使用maven搭建web项目
博客园注册了有二十多天了,还没有写过博客,今天就发一篇,也便于后面查找笔记. 我个人已经做了几年的java web开发了,由于所在的公司是业务型公司,用的都是一些老旧的稳定技术,很少接触到稍微新点的内 ...
- IDEA使用maven搭建spring项目
spring框架 Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅仅限于服务器端的开发.从简单 ...
- J2EE开发框架搭建(1) - maven搭建多项目
怎样使用maven搭建多个项目 1. 创建一个maven project 2. 在frame-parent项目上面点击右键,新建Maven Module 3. 完毕之后再建立一个web项目 4. 依照 ...
- maven搭建ssh项目及遇到的问题
如果采用手动添加jar包的方式搭建项目,会使效率降低,传到github上时,下载时需要下载很多jar包,用maven管理项目可以提高效率 我在搭建maven项目时遇到了 1) java.lang.No ...
- 02.基于IDEA+Spring+Maven搭建测试项目--详细过程
一.背景介绍 1.1公司相关技术 Git:是一款免费的开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,方便多人集成开发 Maven:是基于项目对象模型(POM),可以通过一小段描述信息 ...
- 01.基于IDEA+Spring+Maven搭建测试项目--综述
目前公司的测试工作中常见两种接口:HTTP和Dubbo,这两种接口类型均可以使用相关测试工具进行测试,但都会有一定的局限性和不便之处,具体如下: 1.HTTP接口,当需要对于参数进行加密解密时,就得对 ...
- 【maven】父子项目的一般姿势
一.为什么需要创建maven父子项目. 一般一个业务较多的项目,如果我们做服务拆分的话,有些公共的模块就只能做成jar包了.你将util.constant.model封装成jar包是比较好的,如果da ...
随机推荐
- [P4550] 收集邮票 - 概率期望,dp
套路性地倒过来考虑,设\(f[i]\)表示拥有了\(i\)种票子时还需要多少次购买,\(g[i]\)表示还需要多少钱 推\(g[i]\)递推式时注意把代价倒过来(反正总数一定,从顺序第\(1\)张开始 ...
- laravel中如何区分get数据和post数据
可能有时候会碰到这样的场景: 有一个post提交请求,请求地址为:xxx?id=10,提交的post数据为:id=20而在控制器中,我要同时得到get和post中数据get中的id为10,而post中 ...
- jvm 结构分析
jvm区域总体分两类,heap区和非heap区.heap区又分: Eden Space(伊甸园).Survivor Space(幸存者区).Tenured Gen(老年代-养老区). 非heap区又分 ...
- SpringScan
ClassPathBeanDefinitionScanner.java /** * Perform a scan within the specified base packages, * retur ...
- MonoBehaviour单例的另外一种省事的写法
using UnityEngine; public class CommSystem: SingletonGeneric<CommSystem> { public static strin ...
- java基础之 类型转换
一.自动类型转换 1.java中不同类型的数据在计算时,为保证数据的精度,数据的类型会以大容量的类型为主: 2.自动类型转换的排序: char.byte.short -> int -> l ...
- Java之字符串替换replace()
replace(char oldChar, char newChar)返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的 import java.uti ...
- 2019-08-02 纪中NOIP模拟B组
T1 [JZOJ1420] 佳肴 题目描述 佳肴就是非常美味的菜的意思,佳肴最关键的是选择好原料. 现在有N种原料,每种原料都有酸度S和苦度B两个属性,当选择多种原料时,总酸度为每种原料的酸度之积,总 ...
- 问题 B: 奇怪的电梯
问题 B: 奇怪的电梯 时间限制: 1 Sec 内存限制: 128 MB[命题人:admin] 题目描述 大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0& ...
- nodejs后台运行的方法
nohup node ***.js & 这种方法可以,但存在你无法查询日志等问题 在SSH里另一个有效的方法是screen命令. [转]http://www.9usb.net/201002/l ...