Maven 多模块项目

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/GG_and_DD/article/details/79661856

本篇

介绍了如果构建一个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>

猜你喜欢

转载自blog.csdn.net/GG_and_DD/article/details/79661856