在 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.0http://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.0http://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.0http://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.0http://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>
      

在 IntelliJ IDEA 中创建基本的 Maven 多模块项目相关推荐

  1. 在IntelliJ IDEA中创建Web项目

    在IntelliJ IDEA中创建Web项目 在IntelliJ IDEA中创建Web项目 1,创建Maven WebProject 选择File>New>Project 出现New Pr ...

  2. 在IntelliJ IDEA中创建和运行java/scala/spark程序

    本文将分两部分来介绍如何在IntelliJ IDEA中运行Java/Scala/Spark程序: 基本概念介绍 在IntelliJ IDEA中创建和运行java/scala/spark程序 基本概念介 ...

  3. 【Groovy】IntelliJ IDEA 中创建 Gradle 工程 ( Gradle 工程目录文件分析 )

    文章目录 一.IntelliJ IDEA 中创建 Gradle 工程 二.Gradle 工程目录文件分析 一.IntelliJ IDEA 中创建 Gradle 工程 在 IntelliJ IDEA 中 ...

  4. 【开发环境】Android 命令行中执行 Java 程序 ( IntelliJ IDEA 中创建 Java / Kotlin 工程 | dx 打包 DEX 字节码文件 | dalvikvm 命令 )

    文章目录 前言 一.IntelliJ IDEA 中创建 Java / Kotlin 工程 二.准备 Java 和 Kotlin 代码 三.编译在 PC 上可执行的 Java / Kotlin JAR ...

  5. eclipse创建maven多模块项目(单个类似)

    2019独角兽企业重金招聘Python工程师标准>>> 1.下载安装maven 1.1.下载 注意:maven的版本,要根据你的jdk版本来下载.要不会安装失败,提示版本问题哦 Jd ...

  6. 如何创建一个基于Maven的SmartGWT项目

    如何创建一个基于Maven的SmartGWT项目 使用环境 Eclipse的版本为:Luna Service Release 2 (4.4.2)(这个其实不是很重要,你完全可以使用最新版本的Eclip ...

  7. Maven多模块项目中应用maven-tomcat-plugin热部署

    Maven多模块项目中使用maven-tomcat-plugin热部署 比如有一个父模块xfl(类型为pom的maven项目),其中的pom.xml为: <modules> <mod ...

  8. IDEA中Maven项目中界面右边的Maven Projects中子项目出现灰色

    问题描述:IDEA中Maven项目中界面右边的Maven Projects中子项目出现灰色 解决办法:原因是忽略了Maven模块. 第一步:在IDEA左上角的File-->Setting中找到M ...

  9. IDEA下Maven多模块项目介绍和搭建

    为什么80%的码农都做不了架构师?>>>    1Maven多模块项目介绍 为了便于演示和表达,在intellij中建了小项目进行举例,如下图所示 其中web-m2模块,依赖于com ...

最新文章

  1. 百度大脑发布企业服务解决方案,将 AI 技术落实到细分领域
  2. [Silverlight]使用DoubleAnimation为对象添加动画效果
  3. saltstack安装
  4. java的System.getProperty()方法能够获取的值
  5. 像个字段相减绝对值_遇见你丨像个英雄一样活着 瘫痪作家用手指敲击文字著百万字文学作品...
  6. IOS UITouch 触摸事件,UIResponder 的作用
  7. 蓝桥杯历届试题----矩阵翻硬币
  8. PowerDesigner 表名、字段大小写转换
  9. Android Handler加载图片的几种方式(完)
  10. java1.8win7_JDK 1.8 安装配置教程(win7 64bit )
  11. 【安装配置】Oracle数据库Linux系统下安装(图形界面)
  12. AirDisk创建网盘
  13. WinRAR安装教程
  14. Python-爬虫(数据库基本操作,爬取豆瓣电影排行)
  15. 最全哔哩哔哩学习资源大整理,主要分为14大类,包含各个方面的学习资源
  16. vue+element_ui纯前端下载csv文件
  17. u-boot编译构成之 MLO(1)
  18. 上了年纪的酒店,如何“鸟枪换炮”?
  19. 研究方向之智慧仓储与物流及相关算法
  20. 解决arcgis地图选中的时候有白色边框的问题

热门文章

  1. 【Java线程】Thread Runnable必知必会
  2. 再谈软件测试-工作感悟
  3. 图论相关算法理解和总结
  4. JAVA 13 (集合框架)
  5. Java中的引用类型(强引用、弱引用)和垃圾回收
  6. dhcp服务配置文件/etc/dhcpd.conf详解
  7. Cisco IOS防火墙的安全规则和配置方案
  8. 使用Docker-镜像命令
  9. 初识Docker-什么是docker
  10. springAop和AspectJ的关系