在 IntelliJ IDEA 中创建基本的 Maven 多模块项目

本文介绍了如何在IntelliJ IDEA中创建一个基于Maven的多模块Java项目,详细步骤包括创建父模块和子模块,并设置了适当的依赖管理。通过遵循Maven的约定,可以实现模块间的有效组织和依赖。此外,还提供了添加内部archetypeCatalog以加速项目创建的技巧。
摘要由CSDN通过智能技术生成

在 IntelliJ IDEA 中创建基本的 Maven 多模块项目

笔者的环境:

  • Maven 3.6.3
  • JDK 11
  • IntelliJ IDEA 2020.2.2 (Ultimate Edition)

  创建 Maven 的多模块项目的好处有很多,比方说,可以非侵入式地使用其它工程中的模块、隔离同一个包中不同的类等。这里假设要创建的多模块项目不是 Web 项目,而是普通的 Java 项目。这里要创建的是一个 MVC 多模块项目,方法如下。

  1. 在继续阅读本教程之前,需要先完成 Maven 的安装。关于 Maven 的安装,请见笔者的另一篇博客:

    Maven 的下载安装教程:
    https://blog.csdn.net/wangpaiblog/article/details/112689500

  2. 创建一个 Maven 项目,这个项目将作为多模块中的父模块。

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  3. 创建好之后,应该可以看下如下的 pom 文件。

    在这里插入图片描述

  4. 创建子模块。注意,在创建子模块时要选择父模块,同时正确指定子模块的路径。Maven 约定,默认为子模块路径为父模块的下一级。建议遵循 Maven 这个默认设定。

    在这里插入图片描述

  5. 创建其它的子模块。


    【小贴士】

      如果在创建模块时使用合适的 Maven 原型,可以减少创建时的一些步骤。只是要注意,需要在使用 Maven 原型输入一些变量来避免 IntelliJ IDEA 长时间下载此 Maven 原型。而之所以这里没有选择在父模块中使用 Maven 原型,是因为父模块不需要做太多的事情。步骤如下:

    1. 如图。

      在这里插入图片描述

    2. 在快要完成 Maven 模块创建时,在图中的 Properties 中添加键值对 Name-Value

      • Name archetypeCatalog

        Value internal

      在这里插入图片描述

      在这里插入图片描述

    3. 如果不添加此键值对,IntelliJ IDEA 将会从 Maven 中央仓库去获取上面选择的 archetype。有过完整安装 Maven 的读者可能知道,这个过程可以十分缓慢。而添加此键值对之后,则获取该 archetype 的方式将变为内部获取,而使用这种方式构建项目的速度将大大提高。

      在这里插入图片描述


    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  6. 父模块一般只是用于聚合子模块,它本身可以没有实际的 Java 代码。如果不需要在父模块中编写 Java 源代码,则父模块中的文件夹 src 可以删去。

    在这里插入图片描述

  7. Maven 规定,聚合模块的 <packaging/...> 要设置为 pom,同时作为父模块,应该在父模块的 pom 文件中写明它的子模块。

    (注意:在 Maven 中,聚合模块与父模块本质上是完全不同的、互相独立的概念。但为了减少麻烦,一般会让聚合模块也同时是父模块。)

    在这里插入图片描述

  8. 另外,在设置完之后,IntelliJ IDEA 右侧应该会显示相应的各模块。

    在这里插入图片描述

  9. 为了便于各模块之间的互相依赖,应该在父模块中设置这些依赖。

    (注意:在父模块中,应该使用 <dependencyManagement/...>,而不要直接使用 <dependencies/...>。因为直接使用 <dependencies/...> 会让子模块引入不必要的依赖。

    编程的一个原则就是,不要做多余的事情。要记住,冗余代码就是地雷。如果不希望日后的开发成为灾难,那最好不要偷懒。)

    在这里插入图片描述

  10. 现在,Maven 的多模块项目的骨架已经搭成。各模块中的文件夹 Java 即为 Java 源代码目录。

  11. 各模块的 pom 文件示例代码如下。

    • 父模块 mvc 的 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/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
      
          <groupId>org.genius.mvc</groupId>
          <artifactId>mvc</artifactId>
          <version>1.0</version>
          <packaging>pom</packaging>
          <name>mvc</name>
      
          <modules>
              <module>model</module>
              <module>view</module>
              <module>service</module>
          </modules>
      
          <properties>
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
              <project_version>1.0</project_version>
          </properties>
      
          <dependencyManagement>
              <dependencies>
      
                  <dependency>
                      <groupId>org.genius.mvc</groupId>
                      <artifactId>model</artifactId>
                      <version>${project_version}</version>
                  </dependency>
                  <dependency>
                      <groupId>org.genius.mvc</groupId>
                      <artifactId>view</artifactId>
                      <version>${project_version}</version>
                  </dependency>
                  <dependency>
                      <groupId>org.genius.mvc</groupId>
                      <artifactId>service</artifactId>
                      <version>${project_version}</version>
                  </dependency>
      
              </dependencies>
          </dependencyManagement>
      
      
      </project>
      
    • 子模块 model 的 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/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
      
          <parent>
              <artifactId>mvc</artifactId>
              <groupId>org.genius.mvc</groupId>
              <version>1.0</version>
          </parent>
      
          <artifactId>model</artifactId>
          <name>model</name>
      
      </project>
      
    • 子模块 view 的 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/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
      
          <parent>
              <artifactId>mvc</artifactId>
              <groupId>org.genius.mvc</groupId>
              <version>1.0</version>
          </parent>
      
          <artifactId>view</artifactId>
          <name>view</name>
      
      </project>
      
    • 子模块 controller 的 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/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
      
          <parent>
              <artifactId>mvc</artifactId>
              <groupId>org.genius.mvc</groupId>
              <version>1.0</version>
          </parent>
      
          <artifactId>controller</artifactId>
          <name>controller</name>
      
      </project>
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值