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,访问成功:


本文转自风一样的码农博客园博客,原文链接:http://www.cnblogs.com/chenpi/p/5987332.html,如需转载请自行联系原作者

相关文章
|
6月前
|
Java 应用服务中间件 Apache
Maven程序 tomcat插件安装与web工程启动
Maven程序 tomcat插件安装与web工程启动
68 0
|
4月前
|
XML Java Maven
"Maven项目模块化大揭秘!掌握Model间最佳继承设计,让你的代码优雅如诗,项目维护不再愁!"
【8月更文挑战第11天】Maven是Java项目中常用的构建工具,其模块化特性对大型项目的管理至关重要。本文介绍Maven中的继承与聚合机制,指导如何通过继承消除重复配置,以及如何通过聚合统一构建多个模块。遵循单一职责原则,文章建议按功能划分模块,并提供了父POM与子POM的配置示例。此外,还讨论了适度模块化、依赖管理的原则,帮助提升项目的可维护性和扩展性。
60 4
|
5月前
|
Java Maven
maven 工程pom依赖优化及常用命令
maven 工程pom依赖优化及常用命令
75 0
|
7月前
|
缓存 Java 关系型数据库
【超全详解】Maven工程配置与常见问题解决指南
检查Maven配置包括验证路径、设置pom.xml与Project Structure的Java版本。基本操作有`clean-compile`、`install`和`package`,其中`install`会将jar包放入本地仓库。获取他人工程后需修改配置、清除缓存、更新依赖等。配置文件应从Maven Repository找寻,选择稳定高版本。创建Maven工程可选archetype如`quickstart`或直接创建Java工程。基本目录结构遵循分层设计原则,常见问题包括假性导包、端口占用、时区问题等,对应解决方案包括删除本地仓库文件、调整系统设置或重新加载项目。
1177 6
【超全详解】Maven工程配置与常见问题解决指南
|
6月前
|
SpringCloudAlibaba Java Maven
关于拆分boot工程的踩坑之maven多模块间的依赖关系处理
关于拆分boot工程的踩坑之maven多模块间的依赖关系处理
|
6月前
|
Java 应用服务中间件 API
eclipse创建 maven-web工程
eclipse创建 maven-web工程
|
7月前
|
IDE Java 数据库连接
maven篇2:手动创建maven工程
maven篇2:手动创建maven工程
maven篇2:手动创建maven工程
|
7月前
|
Java Maven
Maven【2】( Web 工程依赖 Java 工程)(命令行操作)
Maven【2】( Web 工程依赖 Java 工程)(命令行操作)
69 0
|
7月前
|
Java 应用服务中间件 Maven
【Maven从入门到如土】创建 Maven 版的 Web 工程
【Maven从入门到如土】创建 Maven 版的 Web 工程
96 0