MAVEN分模块创建工程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/caozp913/article/details/101173873

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目录中

猜你喜欢

转载自blog.csdn.net/caozp913/article/details/101173873
今日推荐