首页 > 代码库 > maven工程模块化
maven工程模块化
前言
项目的模块化有利于任务分工,后期维护,易扩展,模块还可以独立成服务单独部署等;
创建packaging类型为POM的父项目
我用的maven插件是m2e,相信大部分人在eclipse装的也是m2e插件;废话不说,直接开始:
菜单选择新建maven project,注意选择创建一个简单工程,如下图红圈所示,因为我们要创建的是packaging类型为pom的maven项目,自带的archetype里貌似没有对应的类型,反正我是没找到。
接着点击next,在packaging选项里选择pom,然后输入必要的信息即可,如下图:
这时候我们的pom.xml文件是这样的:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.edu.hdu.mm</groupId> <artifactId>multi-module</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>multi-module</name> <description>multi module projects.</description></project>
创建各个子模块
这里打算简单的创建一个web项目作为示例,按层划分;其实复杂点的项目是可以划分成多个子系统模块、多个服务模块,模块之间的通信可以通过jms、webservice等方式。
那么,我们就开始简单的创建common,dao,service,web几个模块吧, 这里,除了web模块的packaging类型是war,其它的都是jar,也就是说,在创建这些模块的时候,web模块选择的archetype为webapp,其它的选quickstart即可;
鼠标右键父工程,选择创建maven module;
创建完各个模块之后,父模块与子模块的POM配置文件如下,很好理解:
父模块POM配置:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.edu.hdu.mm</groupId> <artifactId>multi-module</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>multi-module</name> <description>multi module projects.</description> <modules> <module>multi-module-common</module> <module>multi-module-dao</module> <module>multi-module-service</module> <module>multi-module-web</module> </modules></project>
其中的一个子模块POM配置:
<?xml version="1.0"?><project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>cn.edu.hdu.mm</groupId> <artifactId>multi-module</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>multi-module-common</artifactId> <name>multi-module-common</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies></project>
配置各个模块之间的依赖关系
在这个demo中,模块之间的依赖关系如下:
web依赖service,service依赖dao,dao依赖common模块;
配置依赖关系很简单,比如我们需要在dao模块里配置其依赖common模块,只需在pom添加如下代码片段,跟平时的添加依赖一样:
<dependency> <groupId>${project.groupId}</groupId> <artifactId>multi-module-common</artifactId> <version>${project.version}</version> </dependency>
注意这里的${project.groupId}和${project.version}指的是本模块的groupId和version,因为该模块和multi-module-common模块的共同父模块为multi-module,其groupId和version都继承自multi-module,所以我们这里直接写本模块的groupId和version即可。
开始开发程序
完成以上配置后,就可以开始开发我们的程序了,往common模块写一些公共的东西,dao模块访问数据源,service模块业务需求,web可以写一些jsp,action、controller等;
这里,我简单的写了个spring + spring mvc + mybatis的demo,添加了一个用户增删改查模块,前端页面就没写了~代码见最后的链接。
工程目录大致如下:
运行war包,调试等
代码写完之后,添加数据库(脚本在工程里),然后可以在父工程的pom.xml文件里添加tomcat7-maven-plugin插件配置,右键执行tomcat:run命令,运行war包,也可以右键调试工程,debug As...
执行命令,可看到如下日志,通过日志可以看到具体的执行过程:
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] multi-module
[INFO] multi-module-common
[INFO] multi-module-dao
[INFO] multi-module-service
[INFO] multi-module-web Maven Webapp
[INFO]
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building multi-module 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> tomcat-maven-plugin:1.1:run (default-cli) @ multi-module >>>
[INFO]
[INFO] <<< tomcat-maven-plugin:1.1:run (default-cli) @ multi-module <<<
[INFO]
[INFO] --- tomcat-maven-plugin:1.1:run (default-cli) @ multi-module ---
[INFO] Skipping non-war project
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building multi-module-common 0.0.1-SNAPSHOT ..........................................
执行完命令后,浏览器地址输入http://localhost:8080/multi-module-web/user/getUserList.do?pageNo=0&pageSize=5,访问controller,访问成功:
Demo源码
如下是代码,简单的写了下,仅供参考。
https://github.com/peterchenhdu/Demos/tree/master/multi-module
maven工程模块化