使用Maven进行多模块拆分
模块拆分是Maven经常使用的功能,简单梳理一下如何使用Maven进行多模块拆分,
只做归纳总结,网上资料很多,不再一步一步实际创建和部署。
建立Maven多模块项目
一个简单的Java Web项目,Maven模块结构是这样的:
上述示意图中,有一个父项目(parent)聚合很多子项目(mytest-controller,mytest-util, mytest-dao, mytest-service, mytest-web)。每个项目,不管是父子,都含有一个pom.xml文件。而且要注意的是,小括号中标出了每个项目的打包类型。父项目是pom,也只能是pom。子项目有jar,或者war。根据它包含的内容具体考虑。
父项目声明打包类型等:
<groupId>my.test</groupId>
<artifactId>mytest-parent</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
声明各个子模块:
<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>
然后在子模块中,声明父工程,子模块中代码如下:
<parent>
<groupId>my.test</groupId>
<artifactId>mytest-util</artifactId>
<version>1.0</version>
</parent>
一般来说,项目中需要的外部依赖等都在父项目中引入,这样在子项目中省去了不必要的配置。
另外,各个子项目间的依赖在单独的pom.xml中配置,
比如mytest-web项目依赖控制层的mytest-controller,那么就在依赖中单独配置:
<dependency>
<groupId>my.test<</groupId>
<artifactId>mytest-controller</artifactId>
<version>1.0</version>
</dependency>
这就需要在项目拆分和架构之前需要理清各个模块间的依赖关系。
在最后的Web模块如何打包
如果是单个War项目,使用普通的构建方式即可,需要注意的是如果项目中包含多个war的子模块,
需要使用maven的maven-war-plugin插件的overlays属性来处理,最终主web项目pom.
<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>
如何在IDE中启动和调试
如果项目配置正确,那么直接使用Eclipse的server插件,把最后的web项目部署到服务器中就可以正常启动和调试。
使用Maven进行多模块拆分的更多相关文章
- Maven使用笔记(六)使用Maven进行多模块拆分
模块拆分是Maven经常使用的功能,简单梳理一下如何使用Maven进行多模块拆分, 只做归纳总结,网上资料很多,不再一步一步实际创建和部署. >>建立Maven多模块项目 一个简单的Jav ...
- Springboot项目maven多模块拆分
多模块拆分的必要性 使用Java技术开发的工程项目,无论是数据处理系统还是Web网站,随着项目的不断发展,需求的不断细化与添加,工程项目中的代码越来越多,包结构也越来越复杂这时候工程的进展就会遇到各种 ...
- 【Maven】使用Maven构建多模块项目
Maven多模块项目 Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理.尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定 ...
- Maven 通过maven对项目进行拆分、聚合(重点)
对现在已有maven ssh项目进行拆分,拆分思路:将dao层的代码已经配置文件全体提取出来到一个表现上独立的工程中.同样service.action拆分. ssh-parent: 父工程 ssh-d ...
- Maven 梳理 - 使用Maven构建多模块项目
多模块实际案例 project |--business (核心业务) |--business-api |--business-service |--business-message |--busine ...
- SSH框架之一详解maven搭建多模块项目
闲来无事,思量着自己搭建一个ssh框架,一来回顾熟悉一下ssh的内容,hibernate还就没用过了,生疏了都.二来整合一下,将其他掌握的和正在学习的框架核技术糅合到一起,就当是做一个demo练手了. ...
- Maven管理 划分模块
转载地址:juvenshun.iteye.com/blog/305865 “分天下为三十六郡,郡置守,尉,监” —— <史记·秦始皇本纪> 所有用Maven管理的真实的项目都应该是分模块的 ...
- 使用Maven构建多模块项目
[转] 使用Maven构建多模块项目 在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为domain(域模型层).dao(数据库访问层).service(业务 ...
- Maven 创建多模块工程
1. 创建父项目 new -->project-->maven-->maven Project,然后下一步, 进入new maven Project的Select project n ...
随机推荐
- HTTP1.0、HTTP1.1和HTTP2.0的区别
一.HTTP的历史 早在HTTP建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器.也是说对于前端来说,我们所写的HTML页面将要放在我们的web服务器上,用户端 ...
- android kotlin Gradle DSL method not found: '1.2.51()'错误,be using a version of the Android Gradle plug-in that does not contain the method (e.g. 'testCompile' was added in 1.1.0).
同步的时候遇到这个问题,从log上看是因为gradle的版本不包含kotlin 1.2.51这个method,具体原因我也不是很清楚,大概猜测是kotlin版本的问题,而最新的版本就是1.2.51,所 ...
- python番外篇--sql注入
一.sql注入概念介绍 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意的)S ...
- Git 设置过滤忽略的文件或文件夹(ignore file)
我们一般向代码仓库提交项目的时候,一般需要忽略编译生成的中间文件以及文件夹的提交,因为它们是无用的,而且也会占用仓库的空间.一般只用提交.pro,.sln,makefile,程序源文件等编译必须用到的 ...
- centOS6.4 extundelete工具恢复rm -rf 删除的目录[转]
原文:http://www.cnblogs.com/patf/p/3368765.html PS:补充下,我在fedora 19上运行的时候遇到的一个问题: 1 [root@localhost ext ...
- 《像计算机科学家一样思考Python》-递归
斐波那契数列 使用递归定义的最常见数学函数是 fibonacci (斐波那契数列),见其 定义 fibonacci(0) = 0 fibonacci(1) = 1 fibonacci(n) = fib ...
- 深入理解linux内核v4l2框架之videobuf2【转】
转自:https://blog.csdn.net/ramon1892/article/details/8444193 Videobuf2框架 1. 什么是videobuf2框架? 它是一个针对多媒体设 ...
- BLE获取iphone mac地址的方法--【原创】
本人用的BLE是TIcc2541,1.3.2协议栈 1.首先要说明的是,iphone手机将信息保护了,BLE设备读到的iphone地址是随机的,每次连接都会不同 2.下面我就具体说明如何查看手机的ma ...
- XAF 与 CIIP
XAF 与 CIIP:网站:http://www.uims.top, XAF技术博客:http://www.cnblogs.com/foreachlife/ tylike 升级到 DevExpres ...
- dubbo 一个接口多个实现
<dubbo:service ref="dubboGroupService1" interface="com.yncp.dubbo.service.IDubboGr ...