MAVEN分模块创建工程

maven工程的拆分与聚合

maven可以把一个完整的项目,拆分成各自独立的模块,并赋予这些模块独立的坐标,哪个地方要用到这些模块,直接引用坐标即可。

今后如果要开发一个项目,首先考虑的不是dao、service和controller层的代码怎么写,而是dao、service和controller这些模块是否已经存在,如果存在则直接使用。

以上即为拆分的思想,我们也可以将一些零散的模块聚合到一起组成一个完整的项目,这就是maven工程聚合的思想。

我们可以通过拆分聚合的方式来创建一个工程,相比传统maven工程的方式更加灵活。

maven父子工程

创建一个父maven工程(新建project或module都可以)。其实父工程只要有一个pom.xml文件即可。

在父工程下创建多个子模块。dao模块和service模块直接创建普通的maven工程即可,controller模块要创建web的maven工程。

工程和模块的区别

首先要明确,工程不等于项目,模块也不等于项目。一个完整的项目看的是业务代码的完整,和是不是工程或者模块没有关系。

工程默认只能使用本工程内的资源,就好比一个班不能使用另一个班的空调。但是也可以通过一些方法来让工程之间建立联系。

模块能够共享父工程的资源,好比所有的学生都能使用班里的空调。如果模块没有父工程,那就只能使用自己的资源。

子模块默认继承父工程,可以使用父工程的所有资源。但是各模块之间是没有任何联系的。如何让各模块之间产生关联呢?

在本模块中要用到哪个模块,就导入哪个模块的坐标。导入坐标之后就可以继承那个模块的所有资源。

分模块创建工程需知

父工程配置文件中有关于各模块的整合,每创建一个新模块就会自动添加

<groupId>cao.zhanpeng</groupId>
<artifactId>maven_parent</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>

<modules>
    <module>maven_dao</module>
    <module>maven_service</module>
    <module>maven_controller</module>
</modules>

各模块中默认都有父工程资源的继承,模块自身的坐标和父类共用组织名以及版本号

<parent>
    <artifactId>maven_parent</artifactId>
    <groupId>cao.zhanpeng</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>maven_controller</artifactId>

各模块之间是没有关系的,一个模块如果想要继承另一个模块的资源,只能导入另一个模块的坐标

<dependencies>
    <dependency>
        <groupId>cao.zhanpeng</groupId>
        <artifactId>maven_dao</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

如果是运行整个父工程,各模块就相当于是一个整体。如果是单独运行一个模块,必须保证本地仓库中有对应的jar包。

一旦建立了各模块之间的继承,加上来自父工程的继承,整个工程就是一个整体,即聚合。

对于整个工程而言,每一层的包都是共享的。最好要保证各模块的包结构是一致的。打包后存到本地仓库时是这样的:

通常maven项目的位置,就在idea的工作空间里项目工程下的target目录中

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值