使用Maven构建多模块项目

欲创建的项目结构如下:

image

其中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项目,方便测试

最终结构图如下:

image

安装运行

在webapp-parent目录下执行:

mvn clean install

image
如果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构建多模块项目

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值