欲创建的项目结构如下:
其中webapp-parent为所有其它模块的父模块
一.创建顶层模块webapp-parent
(一).进入工作目录(比如E:\workspace),执行创建命令
mvn archetype:generate -DgroupId=com.my.webapp -DartifactId=webapp-parent -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
groupId:组织ID,反写的公司网址+项目名
artifactId:模块ID
archetypeArtifactId:创建的模块的类型(quickstart为基础模块)
interactiveMode:是否开启交互模式
这样我们即创建了一个父模块,
(二).修改webapp-parent目录下的pom文件
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.my.webapp</groupId>
<artifactId>webapp-parent</artifactId>
<packaging>jar</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>webapp-parent</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>
</project>
将打包方式修改为pom,表示其是父模块,用于其它模块继承
修改版本格式为1.0.0-SNAPSHOT,格式为主版本号-分支版本号-小版本号
(三)删除src目录
由于该模块用于表示结构,并不包含实际代码,删除src目录
二.创建webapp-common模块
(一).进入webapp-parent目录下执行创建命令
mvn archetype:generate -DgroupId=com.my.webapp -DartifactId=webapp-common -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
webapp-parent模块(以下简称父模块)的pom文件内容自动修改为如下:
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.my.webapp</groupId>
<artifactId>webapp-parent</artifactId>
<packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>webapp-parent</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>
<modules>
<module>webapp-common</module>
</modules>
</project>
新增了modules属性,表示webapp-common为webapp-parent的一个子模块
(二)修改pom文件为如下
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.my.webapp</groupId>
<artifactId>webapp-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>webapp-common</artifactId>
<packaging>jar</packaging>
<name>webapp-common</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>
</project>
删除groupId和version属性,让其继承于父模块,
打包方式为jar
三.创建webapp-dao模块
(一).执行创建命令
mvn archetype:generate -DgroupId=com.my.webapp -DartifactId=webapp-dao -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
(二).修改pom文件
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.my.webapp</groupId>
<artifactId>webapp-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>webapp-dao</artifactId>
<packaging>jar</packaging>
<name>webapp-dao</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.my.webapp</groupId>
<artifactId>webapp-common</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
新增了webapp依赖,因为我们要使用该模块中的代码
四.创建webapp-service模块
(一).执行创建命令
mvn archetype:generate -DgroupId=com.my.webapp -DartifactId=webapp-service -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
(二).修改pom文件
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.my.webapp</groupId>
<artifactId>webapp-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>webapp-service</artifactId>
<packaging>jar</packaging>
<name>webapp-service</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.my.webapp</groupId>
<artifactId>webapp-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.my.webapp</groupId>
<artifactId>webapp-dao</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
依赖了webapp-dao模块和webapp-common模块
五.创建webapp-controller模块
(一).执行创建命令
mvn archetype:generate -DgroupId=com.my.webapp -DartifactId=webapp-controller -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
注意这里的模块类型选择为webapp,因为这是我们要运行的web服务器项目
(二).修改pom文件
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.my.webapp</groupId>
<artifactId>webapp-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>webapp-controller</artifactId>
<packaging>war</packaging>
<name>webapp-controller 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>
<dependency>
<groupId>com.my.webapp</groupId>
<artifactId>webapp-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.my.webapp</groupId>
<artifactId>webapp-service</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
<finalName>webapp-controller</finalName>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
这里打包为war包,添加了plugins属性,使用jetty容器运行web项目,方便测试
最终结构图如下:
安装运行
在webapp-parent目录下执行:
mvn clean install
如果BUILD SUCCESS
进入webapp-controller目录下执行:
mvn jetty:run
如果启动成功,打开浏览器,输入
localhost:8080/webapp-controller/index.jsp
,显示出”hello world”则表示成功
参考链接:https://www.cnblogs.com/xdp-gacl/p/4242221.html
博客中编写的案例已经上传至csdn,欢迎下载交流讨论
使用Maven构建多模块项目