IDEA下Maven多模块开发

IDEA下Maven多模块开发

本教程将介绍如何使用IDEA进行Maven多模块工程开发。


一、使用IDEA搭建Maven多模块工程

  1. 首先,我们先来创建一个新的工作空间。

    File -> New-Project -> Empty Project

    点击Next,进行下一步

  2. Project location:点击选择一个空文件夹,作为工作空间

    注意:路径不要有中文

    点击Finish,进行下一步

  3. 现在工程打开的其实就是我们刚才创建的工作空间。

  4. 现在我们开始创建父工程.

    File -> Module -> Maven -> Next

    选择

    maven

    直接点击Next

  5. 创建子工程pojo(打包方式为Jar)

    File -> Module -> Maven -> Next

    选择

    maven

  6. 选择父工程,填写GroupId和ArtifactId和版本信息

    maven

  7. 现在我们能看到common.pom中已经继承了parent工程而parent工程中也聚合和common。

    maven
    maven

二、Maven中继承和聚合的关系

两者的目的是不一样的,聚合的目的是能够快速的构建项目,继承的目的是减少重复配置。

1. 聚合

定义一个聚合模块,然后在pom文件中添加<module></module>标签,其中的内容是模块相对于当前模块的路径。那么在构建聚合模块的时候,在<module>中定义的模块也会跟着构建,不用逐个构建,因此加快了构建速度。

2. 继承

除了定义一个父模块,在父模块的pom文件中添加<module>标签,还要在子模块pom文件中添加<parent>标签,指向父模块。指向之后,那么在父模块中定义的插件和依赖都可以被子模块继承,就不用再子模块pom文件中重复配置了(减少了重复配置)。

注:无论是聚合还是继承,父模块的pom文件中的<packageing>的内容都是pom,(这是规定)。如果不写的话,默认的都是jar。

3. 实际应用

还有一个问题就是,在父模块定义了很多依赖,但是某一个模块并没有全部用到,那么子模块还是会全部继承过来。比较浪费。
所以可以使用依赖管理标签<dependencyManagement>
在父模块的pom文件中的<dependencyManagement></dependencyManagement>定义了所有需要依赖的jar包,但是这样子模块并不会引入这些jar包。子模块中需要哪些jar包就在自身pom文件的<dependency>标签中引入就可以了,因为父模块的pom文件中已经定义过了,子模块的pom文件只需定义出<groupId>和<artifactId>就可以了。

三、Maven的三种工程pom、jar、war的区别

1.pom工程:用在父级工程或聚合工程中。用来做jar包的版本控制。
- 打出来可以作为其他项目的maven依赖,在工程A中添加工程B的pom,A就可以使用B中的类。

2.war工程:将会打包成war,发布在服务器上的工程。如网站或服务。

3.jar工程:将会打包成jar用作jar包使用。

补充一下,jdk9 后还可以打包 jmod(Java 模块化),厉害的是这个通过 jlink 命令,可以直接将 jmod 打包为对应环境的可执行的程序,告别了让用户安装 jdk 的步骤,现在也有对应的 maven 插件了

四、在IDEA中创建pom,jar,war项目

  1. 创建java jar、pom项目时创建maven-archetype-quickstart
  2. 创建java war项目时创建maven-archetype-webapp

maven

五、Maven的三种工程实例

  • 以宜立方商城为例

maven

1. pom工程

1.1 Tmallparent

整个项目的父工程,它是一个pom工程。用来做整个项目的版本控制,也就是项目中所有要使用到的jar包的版本都集中由父工程管理。这样你在写其他工程pom文件中maven依赖时就不需要写版本号了。当然所有的项目都要先继承它才行。

1.2 Tmallmanager

用来做聚合工程,它也是一个pom工程。创建四个model分别是manager-dao 、manager-service、
manager-interface、manager-pojo
manager-web 同时会自动生成4个独立的maven工程。聚合工程只是用来帮助其他模块构建的工具,本身并没有实质的内容。具体每个工程代码的编写还是在生成的工程中去写

<font color="red">pom工程的意义:</font>
原本这些模块也是一个个独立的工程,现在将它们聚合到Tmallmanager中,这样我们构建项目的时候就只要构建Tmallmanager一个就行了。我们只要使用maven构建这个聚合工程taotao-manager就行了而不用去操心模块的构建,比如install时只要install taotao-manager就行。总之就是简化操作。正常的编码工作还是在对应的manager-dao 、manager-service、manager-interface、manager-pojo工程中进行的。

2. war工程

Tmallmanager-web

这些工程都是要部署在服务器上的,所以要打包成war形式。这些工程有的是用户通过浏览器直接访问,有的是通过发布服务被别的工程调用。

3. jar工程

Tmallcommon

这个就是打包成jar的工程。它就是存放一些其他工程都会使用的类,工具类。我们可以在其他工程的pom文件中去引用它,和引用别的jar包没什么区别。

onlyhiphop wechat
欢迎扫描上面的微信公总号,了解我的最新消息!