首先,我们要明确的多模块项目的含义,它是指一个应用中包含多个module。一般来说,一个应用单独部署成服务,只是打包的时候,maven会把各个module组合在一起。各模块一般单独打成jar放到lib目录中,当然web应用也生成war包。

这里说的多模块项目要与那种单独自立门户的多个application区分开来,多个application也可能有包级的关联,但是它们各自分开了,不属于多模块项目的范畴。

maven对多模块项目的管理大概是这样的,它存在一个parent模块,但实际没有程序代码,只包含一个pom.xml,该pom是用来给子模块来引用的。 
   目录结构与下面的类似: 
    simple-parent 
    +-simple-weather 
         +-src 
         +-target 
         \-pom.xml 
    +-simple-webapp 
         +-src 
         +-target 
         \-pom.xml 
    \-pom.xml 
在这个目录结构中,一个父模块包含了两个子模块。 
各个pom.xml的内容大致如下: 
pom.xml:

  1. <modules>
  2. <groupId>org.sonatype.mavenbook.multi</groupId>
  3. <artifactId>parent</artifactId>
  4. <version>0.8-SNAPSHOT</version>
  5. <packaging>pom</packaging>
  6. <module>simple-weather</module>
  7. <module>simple-webapp</module>
  8. </modules>
  9. <dependencies>
  10. <dependency>
  11. <groupId>velocity</groupId>
  12. <artifactId>velocity</artifactId>
  13. <version>1.5</version>
  14. </dependency>
  15. </dependencies>

simple-weather/pom.xml:

  1. <parent>
  2. <groupId>org.sonatype.mavenbook.multi</groupId>
  3. <artifactId>simple-parent</artifactId>
  4. <version>0.8-SNAPSHOT</version>
  5. </parent>
  6. <dependencies>
  7. <dependency>
  8. <groupId>junit</groupId>
  9. <artifactId>junit</artifactId>
  10. <version>3.8.1</version>
  11. <scope>test</scope>
  12. </dependency>
  13. </dependencies>

simple-webapp/pom.xml:

  1. <parent>
  2. <groupId>org.sonatype.mavenbook.multi</groupId>
  3. <artifactId>simple-parent</artifactId>
  4. <version>0.8-SNAPSHOT</version>
  5. </parent>
  6. <dependencies>
  7. <dependency>
  8. <groupId>org.apache.geronimo.specs</groupId>
  9. <artifactId>geronimo-servlet_2.4_spec</artifactId>
  10. <version>1.1.1</version>
  11. </dependency>
  12. </dependencies>

如果按父pom.xml打包,会输出 simple-weather**.jar,simple-webapp**.war两个包; 
如果按simple-weather/pom.xml打包,则只会输出 simple-weather**.jar; 
如果按simple-webapp/pom.xml打包,则只会输出 simple-webapp**.war。

另外,子模块会继承父模块的包依赖,使用mvn dependency:tree可以查看各个模块的包依赖列表,simple-weather,simple-webapp项目都有引用到 velocity包。

虽然这是一个application下包含了多个module的结构,但是在eclipse中,还是得对每个子module单独建project来管理源码。具体可以分别在simple-weather、simple-webapp目录下使用mvn eclipse:eclipse来创建eclipse project,创建完毕后,你就可以在文件.classpath中看到,包依赖关系已经按照pom.xml中的配置自动生成了。

最新文章

  1. Tensorflow- tensor的列操作
  2. Android学习九:屏幕自适应
  3. Structs2动态方法调用
  4. mysql删除二进制日志文件
  5. 论文笔记之:MatchNet: Unifying Feature and Metric Learning for Patch-Based Matching
  6. Oracle 动态视图3 V$SESSION
  7. C#系列教程——switch定义及使用
  8. delphi中用代码实现注册Ocx和Dll(有点怪异,使用CallWindowProc来调用指定函数DllRegisterServer)
  9. PHP的CI框架流程基本熟悉
  10. 【swift】ios中生成二维码
  11. Jmeter接口测试-断言
  12. [POJ1961]Period (KMP)
  13. 一码阻塞,万码等待:ASP.NET Core 同步方法调用异步方法“死锁”的真相
  14. Java学习--抽象类和接口
  15. 今日头条移动app广告激活数据API对接完整Java代码实现供大家参考》》》项目随记
  16. Tomcat 配置目录
  17. RootConfig类
  18. 【Django】【五】开发Web接口
  19. 搭建Eclipse+ADT+Android SDK 安卓开发环境
  20. CentOS 7安装zabbix-2.4.8监控

热门文章

  1. iOS 相机和相册使用授权
  2. Java API —— Math类
  3. HDU 4604 deque 最长上升子序列
  4. uva 10453 - Make Palindrome(dp, 记录路径)
  5. 石子合并(四边形不等式优化dp) POJ1160
  6. bzoj2794
  7. UVa 10870 (矩阵快速幂) Recurrences
  8. HDU 2087 (KMP不可重叠的匹配) 花布条
  9. jdom学习读取XML文件
  10. C# winform 窗体从右下角向上弹出窗口效果