我们如何进行模块化开发呢?

我们使用上面的例子进行演示,先进行合理的优化,我们希望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项目

  1. New Project

  1. 填写基本信息,这里使用ipr作为项目描述文件

  1. 普通Maven项目不需要使用Maven模板搭建

二、给Maven项目添加模块

  1. New Module

  1. 填写基本信息,jar项目同样不需要使用Maven模板搭建

  1. 这个时候就可以看到,我们所添加的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>
  1. 变更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模块

  1. 创建一个module,并选中“Create from archetype”选项,同时maven模板选择webapp

  1. 接下来耐心的等待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>

四、添加模块间的依赖关系

  1. 增加core与util的依赖

  1. 增加admin与core的依赖关系

admin与core、util的依赖链

多模块项目的构建与发布

打包

所有在root项目中进行的构建都会传递到模块中,例如root中的package会打包整个项目,当文件有变动时会进行重新聚合,其他命令同理。模块中的package只会打包当前模块。

使用source:jar命令会将源码打包。

clean install 打出war包和源码。

使用命令打包方法:

在Debug Configurations 参数 Goals 写命令参数  DEBUG运行~

打包注意要点:eclipse工具

但是maven插件需要使用jdk,因此需要在eclipse修改Installed JRES
位置在-->【Window】-->【Prefrences】-->【Java】-->【Installed JREs】
详见下图。

打完包后直接将war包扔到webapps里就可以了

Maven分模块以及打war包的更多相关文章

  1. Maven高级:01.maven分模块构建&&02.私服的应用

    IntelliJ IDEA 2018.3.6 x64 07 Maven高级:01.maven分模块构建(上) 07 Maven高级:01.maven分模块构建(中) 07 Maven高级:01.mav ...

  2. spring+springmvc+hibernate架构、maven分模块开发样例小项目案例

    maven分模块开发样例小项目案例 spring+springmvc+hibernate架构 以用户管理做測试,分dao,sevices,web层,分模块开发測试!因时间关系.仅仅測查询成功.其它的准 ...

  3. 1.Maven分模块,分工程管理,多Web应用合并war包

    Eclipse 创建Maven工程 修改POM文件   Eclipse 创建Module工程 以此类推,创建Maven 的Modules web工程goodsmgrweb,创建Maven的Module ...

  4. 在eclipse中使用Maven分模块搭建SSM框架,创建jar、war、pom工程模块教学,项目的热部署,需要的可以留下邮箱,给大家发整理过的Maven笔记

    第一章:Maven概述 (1)Maven是一个项目构建工具,由apache提供,用Java开发的 (2)构建工具:Ant(蚂蚁),Maven(专家) (3)构建工具作用:帮助程序员进行项目的创建,目录 ...

  5. Maven 分模块,启动父工程时异常

    1.1 运行方式 Maven方式:命令的 方式1:运行父工程.父工程将各个子模块聚合到一起.将ssh-web打war包发布到tomcat 方式2:直接运行web工程 其他方式:传统的,   部署到to ...

  6. springboot多模块项目打war包

    一.父模块配置 1,指定pakaging:pom 2,指定编译的版本:如下图: <properties> <project.build.sourceEncoding>UTF-8 ...

  7. maven web project打包为war包,目录结构的变化

    一个maven web project工程目录: 资源管理器中的目录层级如下: 导出为war包之后的目录层级为: 我们会发现,其实并没有如下的这些目录层级: 所以这两个目录层级只是IDE为我们添加的, ...

  8. spring-boot分环境打包为war包

    1.启动类修改 @EnableSwagger2 @SpringBootApplication public class CustWebAcApplication extends SpringBootS ...

  9. maven分模块间依赖注意事项

    1.被依赖模块应该先通过 maven -install 命令将该模块打包为jar发布到本地仓库 2.引用的模块通过在pom.xml文件中添加dependence引用 maven -package 将项 ...

随机推荐

  1. OJ题:成绩排序

    题目描述 查找和排序 题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩 都按先录入排列在前的规则处理. 例示: jack 70 peter 96 Tom 70 smit ...

  2. C语言之任意进制的转换

    我们都知道转换进制是一个让人比较头疼的事情,下面我的代码不是最好的,也就仅仅是一个思路而已,至少我认为使用栈来进行进制转换是比较合适的一种方法,好了,不多叙述了. #include<stdio. ...

  3. 基于Qt的手机程序----口袋理财

    主页面 记账模块 制定目标 备忘录

  4. 内存分配的原理__进程分配内存有两种方式,分别由两个系统调用完成:brk和mmap(不考虑共享内存)

    如何查看进程发生缺页中断的次数? 用ps -o majflt,minflt -C program命令查看. majflt代表major fault,中文名叫大错误,minflt代表minor faul ...

  5. log4xx/log4j异步日志配置示例

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration S ...

  6. How Many Processes Should Be Set For The Receiving Transaction Manager (RTM)

    In this Document   Goal   Solution   References APPLIES TO: Oracle Inventory Management - Version 10 ...

  7. Leetcode_162_Find Peak Element

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/43415313 A peak element is an e ...

  8. TableLayout和Viewpager实现切换

    因为我是在之前的基础上写的,所以这个TableLayout和Viewpager实际上是写在Fragment上的.要写到Activity里其实也是一样的啦. 先看效果图,原谅我不会动态图,只能截个图啦 ...

  9. Struts2技术内幕 读书笔记二 web开发的基本模式

    最佳实践 在讨论基本模式之前,我们先说说一个词:最佳实践 任何程序的编写都得遵循一个特定的规范.这种规范有约定俗称的例如:包名全小写,类名每个单词第一个字母大写等等等等;另外还有一些需要我们严格遵守的 ...

  10. C/C++中关键字static的用法及作用

    本文将主要从static在C和C++共有的作用及C++特有的作用两个方面进行解析. 在C和C++中共有的作用 隐藏(对变量.函数均可) 当同时编译多个文件时,所有未加static前缀的全局变量或全局函 ...