使用maven搭建多模块项目
来源:互联网 发布:软件测试面试经历 编辑:程序博客网 时间:2024/06/06 01:12
代码 https://github.com/beiyoufx/maven-multi-module
代码中不包含工程文件,支持IDEA导入和Eclipse导入
我们为什么要进行模块化开发?
在多人使用Maven协作开发项目时,尤其是稍微上点规模的项目,每个RD的工作都细分到具体功能和模块,有些模块甚至还要单独部署。
我们假设有这样一个商城项目,包括以下几个模块:
- 商城前台(shop)
- 管理后台(admin)
- 数据库交互模块(dao)
- 通用业务模块(service)
- 接口模块(api)
- 通用工具(util)
其中shop和admin需要单独部署,dao、service、util你可能想要一些经验丰富的人来维护,如果使用一个应用来管理的话,所有的功能和模块都会耦合在一起,所有人都可以随意修改代码,这显然不是我们所期望的。
而且使用一个应用来管理的话,任何一个点的代码有变更,整个项目就需要重新build,使用模块化开发的另一个好处是如果dao的代码被修改,只需要重新build dao模块就可以了。web模块可以build成war,dao、service、util等可以build成jar,只需要配置好依赖关系,就可以实现模块间的解耦合。这样的设计才是遵循“高内聚,低耦合”设计原则的。
我们如何进行模块化开发呢?
我们使用上面的例子进行演示,先进行合理的优化,我们希望dao和service作为通用的底层工具来使用,把它们合并成一个核心模块(core),build成core.jar,简单的Maven模块化项目结构如下:
---------- mall //顶级项目 |------ pom.xml //packaging = pom |------ mall-util //通用工具 | |--- pom.xml //packaging = jar |------ mall-core //核心模块 | |--- pom.xml //packaging = jar |------ mall-web-api //接口模块 | |--- pom.xml //packaging = war |------ mall-web-admin//管理后台 | |--- pom.xml //packaging = war |------ mall-web-shop//商城前台 | |--- pom.xml //packaging = war
这些模块中api、admin、shop均是可以单独部署的web应用,相互之间没有依赖关系,但都依赖于core模块,而core模块依赖于util模块。接下来我们按照上述确定的结构来搭建项目结构。
使用IDEA来创建Maven多模块项目
一、创建一个普通Maven项目
- New Project
- 填写基本信息,这里使用ipr作为项目描述文件
- 普通Maven项目不需要使用Maven模板搭建
二、给Maven项目添加模块
- New Module
- 填写基本信息,jar项目同样不需要使用Maven模板搭建
- 这个时候就可以看到,我们所添加的module已经被引入到parent的pom文件里了
<groupId>com.mall</groupId><artifactId>mall</artifactId><packaging>pom</packaging> //打包方式为pom<version>1.0-SNAPSHOT</version><modules> <module>mall-util</module></modules>
- 变更util模块的构建方式为jar
<parent> <artifactId>mall</artifactId> <groupId>com.mall</groupId> <version>1.0-SNAPSHOT</version></parent><packaging>jar</packaging> //打包方式为jar<artifactId>mall-util</artifactId>
三、给Maven项目添加web模块
- 创建一个module,并选中“Create from archetype”选项,同时maven模板选择webapp
- 接下来耐心的等待maven帮你创建好module,模块信息已经被添加
<modules> <module>mall-util</module> <module>mall-web-admin</module></modules>
目录结构如下:
pom:
<parent> <artifactId>mall</artifactId> <groupId>com.mall</groupId> <version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>mall-web-admin</artifactId><packaging>war</packaging><name>mall-web-admin</name><url>https://github.com/beiyoufx</url><dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency></dependencies><build> <finalName>mall-web-admin</finalName></build>
四、添加模块间的依赖关系
- 增加core与util的依赖
- 增加admin与core的依赖关系
admin与core、util的依赖链
多模块项目的构建与发布
打包
所有在root项目中进行的构建都会传递到模块中,例如root中的package会打包整个项目,当文件有变动时会进行重新聚合,其他命令同理。模块中的package只会打包当前模块。
使用source:jar
命令会将源码打包。
发布
web模块可以单独部署也可聚合部署。
- 使用maven搭建多模块项目
- maven搭建多模块项目
- maven搭建多模块项目
- Maven多模块项目搭建
- MAVEN多模块项目搭建
- Maven多模块项目搭建
- Eclipse下使用maven搭建多模块项目
- 使用IntelliJ IDEA搭建多maven模块JAVA项目
- Eclipse下使用maven搭建多模块项目
- 用maven搭建多模块项目
- Maven搭建多模块企业级项目
- Maven搭建多模块企业级项目
- 搭建多模块企业级Maven项目
- maven搭建多模块项目和管理
- Maven学习 搭建多模块企业级项目
- Maven多模块项目介绍和搭建
- Maven多模块项目介绍和搭建
- Maven多模块搭建Web项目
- java已经会的梳理
- 关于微服务和 Java 需要知道的 5 件事
- Get Regexp Matches正则表达取值
- 滑动 点击 下拉 listview时出现黑色的解决方法
- 阿里云短信发送
- 使用maven搭建多模块项目
- 代码阅读工具:Source Navigator和Source Insight
- coding上创建新项目
- cas搭建sso单点登陆
- 自定义控件(Dialog篇)
- win10 msys2 vs2015 ffmpeg3.2.2 编译
- 使用SDK设计linux应用程序
- CODE[VS] 天梯 1083 Cantor表
- linux命令大全