Maven 多模块项目

原文博客:Doi技术团队
链接地址:https://blog.doiduoyi.com
初心:记录优秀的Doi技术团队学习经历

本篇

介绍了如果构建一个Maven的多模块项目,一些问题的解决办法。

简单理解

Maven的多模块,其实可以简单的理解为,有多个POM表构成,由一个父表POM组织起来,形成了Maven的多模块模式。

例如

在一个简单的ssm项目中,有service层,dao层,controller层。如果把3层分成3个模块,就有3张pom表,然后由一个父表把这3张表组织起来。一个Maven的多模块就成功了。

实现

  1. 首先建立一个maven项目。


    屏幕快照 2018-03-20 19.03.02.png
  2. 得到一个简单的maven项目,该项目是一个单模块的,因为只有一个pom表和一个src文件


    屏幕快照 2018-03-20 19.03.08.png
  3. 接下来要把它改成多模式,先把src文件删除。然后右击项目名字Demo,然后new->Module

    屏幕快照 2018-03-20 19.03.14.png

  4. 建立service层,web层,controller层,3个模块


    屏幕快照 2018-03-20 19.03.20.png
  5. 其中web生成的是web-maven 这样就带有web.xml文件了。


    屏幕快照 2018-03-20 19.03.20.png

分析POM

  1. POM表分两类,一类是父类POM表。
  • 特点:
    • 有一个modules标签,该标签下是放子Pom表的。
    • 父类上的dependencies标签下的jar包,是相当于全局的jar包,所有子模块是公用的。
<?xml version="1.0" encoding="UTF-8"?>
<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>com.demo</groupId>
    <artifactId>demo</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>


    <modules>
        <module>web</module>
        <module>service</module>
        <module>Controller</module>
    </modules>

    <dependencies></dependencies>
</project>
  1. 子类POM类
  • 特点:
    • parent标签是父类POM的信息
    • 子类的dependencies标签的Jar包,可以覆盖父类的jar包。
<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/maven-v4_0_0.xsd">
    <parent>
        <artifactId>demo</artifactId>
        <groupId>com.demo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>web</artifactId>
    <packaging>war</packaging>
    <name>web Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>web</finalName>
    </build>
</project>

敲黑板:一些坑

导包

  • 父类的包标签值是pom。<packaging>pom</packaging>
  • 子类的值可以jar或者是war。

子模块之间的依赖

  • 意思就是web模块如果要调用service模块的类,首先web模块的Pom表要导入service的包才行。也就是<dependency></dependency>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • SpringBoot创建maven多模块项目(实战) 工作中一直都是一个人奋战一人一个项目,使用maven管理,看...
    Chinesszz阅读 10,553评论 7 8
  • 转自:http://www.cnblogs.com/Brake/p/create_maven_multi_modu...
    上单霸主ZJY阅读 6,565评论 0 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,798评论 19 139
  • github: https://github.com/liangyt/mavenmultimodule 由于各个I...
    liangyongtong阅读 4,451评论 0 0
  • 组织提供“平等”,消除差异 实质是将对内差异转化为对外矛盾 无论是那种集团或是组织都或多或少的带有一些这样的特点 ...
    栎柟阅读 1,391评论 0 0