Maven使用笔记(六)使用Maven进行多模块拆分

简介: 模块拆分是Maven经常使用的功能,简单梳理一下如何使用Maven进行多模块拆分, 只做归纳总结,网上资料很多,不再一步一步实际创建和部署。 一个简单的Java Web项目,Maven模块结构是这样的: 上述示意图中,有一个父项目(parent)聚合很多子项目(mytest-controller,mytest-util, mytest-dao, mytest-service, mytest-web)。

模块拆分是Maven经常使用的功能,简单梳理一下如何使用Maven进行多模块拆分,

只做归纳总结,网上资料很多,不再一步一步实际创建和部署。

1.建立Maven多模块项目

一个简单的Java Web项目,Maven模块结构是这样的:

上述示意图中,有一个父项目(parent)聚合很多子项目(mytest-controller,mytest-util, mytest-dao, mytest-service, mytest-web)。每个项目,不管是父子,都含有一个pom.xml文件。而且要注意的是,小括号中标出了每个项目的打包类型。父项目是pom,也只能是pom。子项目有jar,或者war。根据它包含的内容具体考虑。

父项目声明打包类型等:

1
2
3
4
< groupId >my.test</ groupId >
< artifactId >mytest-parent</ artifactId >
< version >1.0</ version >
< packaging >pom</ packaging >

 


声明各个子模块:

1
2
3
4
5
6
7
8
< modules >
         < module >mytest-controller</ module >
         < module >mytest-service</ module >
         < module >mytest-util</ module >
         < module >mytest-dao</ module >
         < module >mytest-web-1</ module >
         < module >mytest-web-2</ module >
</ modules >

 

然后在子模块中,声明父工程,子模块中代码如下:

1
2
3
4
5
< parent >
         < groupId >my.test</ groupId >
         < artifactId >mytest-util</ artifactId >
         < version >1.0</ version >
</ parent >

一般来说,项目中需要的外部依赖等都在父项目中引入,这样在子项目中省去了不必要的配置。

另外,各个子项目间的依赖在单独的pom.xml中配置,
比如mytest-web项目依赖控制层的mytest-controller,那么就在依赖中单独配置

1
2
3
4
5
< dependency >
             < groupId >my.test<</ groupId >
             < artifactId >mytest-controller</ artifactId >
             < version >1.0</ version >
</ dependency >

这就需要在项目拆分和架构之前需要理清各个模块间的依赖关系。

2.在最后的Web模块如何打包

如果是单个War项目,使用普通的构建方式即可,需要注意的是如果项目中包含多个war的子模块,

需要使用maven的maven-war-plugin插件的overlays属性来处理,最终主web项目pom.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
< build >
         < finalName >xhcms</ finalName >
         < plugins >
             <!-- 合并多个war --> 
             < plugin >
                 < groupId >org.apache.maven.plugins</ groupId >
                 < artifactId >maven-war-plugin</ artifactId >
                 < version >2.4</ version >
                 < configuration >
                     < overlays >
                         < overlay >
                             < groupId >my.test</ groupId >
                             < artifactId >my-test-web-1</ artifactId >
                             < excludes >
                                 < exclude >WEB-INF/web.xml</ exclude >
                             </ excludes >
                             <!-- 目标路径 -->
                             < targetPath >test</ targetPath >
                         </ overlay >
                     </ overlays >
                 </ configuration >
             </ plugin >
         </ plugins >
     </ build >

  

3.如何在IDE中启动和调试

如果项目配置正确,那么直接使用Eclipse的server插件,把最后的web项目部署到服务器中就可以正常启动和调试。

 


目录
相关文章
|
8天前
|
Java Apache 项目管理
使用Maven进行Java项目构建与依赖管理
【4月更文挑战第16天】Apache Maven是Java项目的核心构建工具,它基于POM进行项目管理和构建自动化,简化构建过程并管理依赖。Maven提供标准化的目录结构、自动依赖解决、丰富的插件生态、多模块构建支持和版本管理功能。通过安装Maven、创建项目、配置依赖、构建及使用插件,开发者能高效管理Java项目,提升开发效率。了解和掌握Maven对于Java开发者至关重要。
|
3月前
|
存储 Java 关系型数据库
深入探索Maven:优雅构建Java项目的新方式(二)
深入探索Maven:优雅构建Java项目的新方式(二)
|
3月前
|
Java Maven
深入探索Maven:优雅构建Java项目的新方式(一)
深入探索Maven:优雅构建Java项目的新方式(一)
|
存储 Java Maven
Maven多模块(4)|学习笔记
快速学习Maven多模块(4)
94 0
Maven多模块(4)|学习笔记
|
Java Maven Android开发
Maven多模块(2)|学习笔记
快速学习Maven多模块(2)
82 0
Maven多模块(2)|学习笔记
|
XML Java Maven
Maven 多模块(1)|学习笔记
快速学习 Maven 多模块(1)
68 0
Maven 多模块(1)|学习笔记
|
Java Maven Android开发
Maven多模块(3)|学习笔记
快速学习Maven多模块(3)
71 0
Maven多模块(3)|学习笔记
|
SQL Java Maven
Maven学习笔记 标签以及多模块
Maven学习笔记 标签以及多模块
Maven学习笔记 标签以及多模块
|
Java 数据库连接 Maven
|
XML Java 应用服务中间件
Maven教程3(依赖管理)
Maven项目,依赖,构建配置,以及构件:所有这些都是要建模和表述的对象。这些对象通过一个名为项目对象模型(Project Object Model, POM)的XML文件描述。这个POM告诉Maven它正处理什么类型的项目,如何修改默认的行为来从源码生成输出。同样的方式,一个Java Web应用有一个web.xml文件来描述,配置,及自定义该应用,一个Maven项目则通过一个 pom.xml文件定义。该文件是Maven中一个项目的描述性陈述;也是当Maven构建项目的时候需要理解的一份“地图”。
Maven教程3(依赖管理)

推荐镜像

更多