原文博客:Doi技术团队
链接地址:https://blog.doiduoyi.com
初心:记录优秀的Doi技术团队学习经历
本篇
介绍了如果构建一个Maven的多模块项目,一些问题的解决办法。
简单理解
Maven的多模块,其实可以简单的理解为,有多个POM表构成,由一个父表POM
组织起来,形成了Maven的多模块模式。
例如
在一个简单的ssm项目中,有service层,dao层,controller层。如果把3层分成3个模块,就有3张pom表,然后由一个父表把这3张表组织起来。一个Maven的多模块就成功了。
实现
-
首先建立一个maven项目。
-
得到一个简单的maven项目,该项目是一个单模块的,因为只有一个pom表和一个src文件
-
接下来要把它改成多模式,先把src文件删除。然后右击项目名字
Demo
,然后new->Module
-
建立service层,web层,controller层,3个模块
-
其中web生成的是web-maven 这样就带有web.xml文件了。
分析POM
- 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>
- 子类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>