本文通过一个例子来介绍利用maven来构建一个多模块的jave项目。开发工具:intellij idea。

一、项目结构

multi-module-project是主工程,里面包含两个模块(Module):

  1. web-app是应用层,用于界面展示,依赖于web-service参的服务。
  2. web-service层是服务层,用于给app层提供服务。

二、构建项目

2.1 Parent Project

新建一个空白标准maven project(不要选择Create from archetype选项)

填写项目坐标

得到一个标准的maven项目,因为该项目是作为一个Parent project存在的,可以直接删除src文件夹。

2.2 增加web-app模块(Module)

选择从archetype创建(选择webapp选项)

groupId和version继承自Parent project,这里只需要填写artifactId即可。

2.3增加web-service模块

用同样的方法创建web-service模块(不过该模块是一个空白maven标准项目,不要从archetype创建)

2.4 得最终项目结构

2.5 关键几点

  1. Parent project和各个Module拥有独立pom文件,他们之间的关系后续会专门写文章介绍。
  2. Parent project用于组织不同的Module,不实现逻辑
  3. Module集成Parent project的groupId和version,Module只需要指定自己的artifactId即可。

三、添加项目依赖

上面的操作是添加web-app对web-service模块的依赖,完成上述操作后web-Service中public的类已经在web-app模块中可见了。但是这个时候在app模块使用了service模块中的类,通过maven进行编译(compile)的时候还是会报错XX找不到(XX为service模块的类),要解决这个问题需要在app的pom中增加对service的依赖:

   <dependency>
<groupId>com.cnblogs.kmpp</groupId>
<artifactId>web-service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

以上,项目依赖的添加已经完成

四、开始编程

4.1 web-service模块编程

在web-service模块中增加一个Service类(SimpleService.java)

4.2 web-app模块编程

在web-app模块增加一个Servlet,并且调用web-service模块的SimpleService类的getServiceDescription方法。

4.3 配置Servlet

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app>
<display-name>Archetype Created Web Application</display-name> <servlet>
<servlet-name>Simple</servlet-name>
<servlet-class>com.cnblogs.kmpp.SimpleServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Simple</servlet-name>
<url-pattern>/simple-servlet</url-pattern>
</servlet-mapping>
</web-app>

五、运行

在web-app的pom中增加j2ee的依赖,以及jetty插件的依赖。运行jetty。详情

在浏览器中输入:http://localhost:8080/web-app/simple-servlet

得到运行结果:

六、结束

至此,本文完整演示了使用maven构建多模块项目。

最新文章

  1. 【GitHub Desktop】MacOS和Win下配置及简单的使用
  2. Laravel在不同的环境调用不同的配置文件
  3. 转:Repeater嵌套绑定Repeater以及内层调用外层数据
  4. MariaDB Galera Cluster 部署(如何快速部署 MariaDB 集群)
  5. Getting and installing the PEAR package manager
  6. 如何导入ShareSDK的sample
  7. sql语句常见错误
  8. iOS pop使用通知传值
  9. Python中小中花括号的区别
  10. pyqt QTableWidgetItem多行显示
  11. java自动生成略缩图
  12. 谈谈php依赖注入和控制反转
  13. pandas 使用panel 报错 Panel is deprecated and will be removed in a future version.
  14. linux安装jdk1.8.0_91
  15. Java使用POI导入Excel异常Cannot get a text value from a numeric cell 解决
  16. hibernate 多对一(级联)操作
  17. ExtJS动态设置表头
  18. jquery 格式化数字字符串(小数位)
  19. 快速排序(Quicksort)的Javascript实现(转载)
  20. 017.1 stringBuffer

热门文章

  1. UGUI [TextArea]
  2. (转)企业级NFS网络文件共享服务
  3. Lua 遍历Linux目录下的文件夹
  4. 新浪微博OAuth2授权错误 error:redirect_uri_mismatch
  5. 【第一篇笔记】C# 全局容错,全局异常
  6. 如何修改eclipse的web项目默认浏览器
  7. springboot2.x如何添加事务
  8. poj 2378 删点最大分支不超过一半
  9. 企业工商营业执照副本模板PSD源文件素材下载
  10. web worker技术-js新线程