简介
Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块。
简单多模块搭建
多模块项目说简单点可以理解为项目间的继承。首先搭建一个简单的多模块项目结构,我用的idea创建项目。既然是继承我们先创建整个项目结构的父项目,创建的过程注意一点,因为使用的是idea所以父项目创建为project。因为是父项目所以src等文件夹都可以删掉了 看起来项目更干净一些,我们只需要父项目的pom文件来进行依赖配置。父项目pom文件如下:
<groupId>com.xs.personal</groupId>
<artifactId>loginServer</artifactId>
<packaging>pom</packaging>
<version>1.0.1</version>
<name>loginServer</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.2.5.RELEASE</spring.version>
<login.version>1.0.1</login.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>${spring.version}</version>
</dependency>
.......................
</dependencies>
</dependencyManagement>
注意父项目的打包方式配置成pom方式。maven打包方式配置为pom打包就是什么都不会生成。
dependencyManagement 配置用来配置声明子项目可能用到的依赖 如果子项目用到了某个依赖可以不需要配置版本号 而使用父项目声明好的 方便各个子项目的依赖管理。当然如果子项目配置了版本号则会使用子项目配置的版本号。
父项目创建好了 ,接下来创建子项目。在刚刚建立的父项目上创建module。我创建了三个module,创建完后如下:
创建完会发现父项目的pom文件中多出了部分配置
<modules>
<module>loginServer-web</module>
<module>loginServer-api</module>
<module>loginServer-mapper</module>
<module>loginServer-service</module>
</modules>
这样简单的父子项目结构就建好了,但是只有结构是不够的,各个项目间还需要建立依赖互相调用。首先在父项目pom文件中加入这些依赖
<dependencyManagement>
<dependencies>
<!--子项目依赖-->
<dependency>
<groupId>com.xs.personal</groupId>
<artifactId>loginServer-web</artifactId>
<version>${login.version}</version>
</dependency>
<dependency>
<groupId>com.xs.personal</groupId>
<artifactId>loginServer-api</artifactId>
<version>${login.version}</version>
</dependency>
<dependency>
<groupId>com.xs.personal</groupId>
<artifactId>loginServer-service</artifactId>
<version>${login.version}</version>
</dependency>
<dependency>
<groupId>com.xs.personal</groupId>
<artifactId>loginServer-mapper</artifactId>
<version>${login.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
在子项目的依赖只需要使用父项目声明的依赖就可以了,比如web子项目需要依赖service子项目只需要在web子项目的pom文件加入如下依赖就可以了:
<dependency>
<groupId>com.xs.personal</groupId>
<artifactId>loginServer-service</artifactId>
</dependency>
这样整个简单多模块项目结构就搭建和依赖好了。
实际项目完整版多模块项目结构依赖
在实际项目中,只是简单的多项目依赖并不能满足工作需要,比如我上面建立的登录模块现在用dubbo做分布式服务,我要新建立一个提供登录服务的项目。可能还需要两个项目不在一台服务器。实际项目中这样不同的项目可能会有10几个。办法当然是有的。
创建多个简单多模块结构每个结构中的父项目可能是登录模块项目,登录服务项目等等。接下来我们再单独创建一个父项目作为所有结构中的爷爷项目,这样每组子项目依赖父项目,所有父项目依赖爷爷项目,这样不同的模块就依赖起来了。
但是跨服务器的问题怎么解决呢。创建完爷爷项目后我们install这个爷爷项目,就像下图一样:
然后到我们的maven本地仓库中就可以找到爷爷项目依赖包了,文件目录是groupId+artifactId+版本号然后我们可以看到下图的文件:
这就是最关键的文件了 接下来把这个文件传到maven服务器上,各个父项目只需要在pom中j加入下面的配置就可以像依赖jar包一样依赖这个爷爷项目了,这样整个完整的多项目模块就创建依赖好了。
<parent>
<artifactId>loginServer</artifactId>
<groupId>com.xs.personal</groupId>
<version>1.0.1</version>
</parent>
转载自:https://blog.csdn.net/xs925048899/article/details/79748707