Eclipse中创建Maven Module和Maven Project及其间区别

Eclipse中创建Maven Module和Maven Project及其间的区别

  • Maven Module和Maven Project
    • Project和Module的关系及用法
    • Maven Module工程必须有父工程
  • 创建Maven Project
  • 创建Maven Module
  • 在删除Maven Module所属的Maven Project后,Maven Module会变为一个单独的项目留存,不会一同被删除。

Maven Module和Maven Project

Eclipse中创建Maven Module和Maven Project及其间区别_第1张图片
Maven Project可以理解为父工程,是最上级的项目,一般没有其他parent项目。是一个单独、独立的工程,在打包为jar或者war时,可以单独运行。如果在pom文件中添加了对父工程的依赖,则作为父工程的子工程。

Maven Module可以理解为子工程,就是为了继承,引用父项目而建的。Maven Module也是一个maven 工程,但是却是一个子工程,必须有父工程存在并依赖,Maven Module不能抛弃父工程单独存在。
创建Maven Module工程必须有存在的父工程,maven就是通过父子工程进行工程管理的。

另外一点区别是,如果是Maven Module,那么在父工程的POM文件中肯定有module节点,示例如下:
在这里插入图片描述

因为父工程的POM文件中有module节点的存在,所以在父工程使用命令run as Maven install将会把父工程与所有子工程都打包安装到本地仓库。

Project和Module的关系及用法

项目中一般使用maven进行模块管理,每个模块下对应都有一个pom文件,pom文件中维护了各模块之间的依赖和继承关系。项目模块化可以将通用的部分抽离出来,方便重用;修改一部分代码不再是build整个项目,缩短了build时间;此外各模块都有自己的pom文件,结构更清晰。

使用maven进行模块划分管理,一般都会有一个父级项目,pom文件除了GAV(groupId, artifactId, version)是必须要配置的,另一个重要的属性就是packaging打包类型,所有的父级项目的packaging都为pom。packing默认是jar类型,如果不作配置,maven会将该项目打成jar包。作为父级项目,还有一个重要的属性,那就是modules,通过modules标签将项目的所有子项目引用进来。而对于各个子项目,需要在其对应的pom文件开头申明对父级项目的引用,通过GAV实现。对于子项目自己的GAV配置,GV如果不配置,则会从父级项目的配置继承过来。子模块可通过dependencies标签来添加自己的依赖,此外子类项目的packaging值一般是war或者jar,前面已经说过,packaging默认是jar类型。如果是需要部署的项目,则需要打包成war类型,如果只是内部调用或者是作服务使用,则推荐打包成jar类型。

在build父级项目时,会根据子模块的相互依赖关系整理一个build顺序,然后依次build。

还可看看我的这篇博客。

Maven Module工程必须有父工程

如下图所示
Eclipse中创建Maven Module和Maven Project及其间区别_第2张图片

创建Maven Project

Eclipse中顶部导航栏点击File——New——Project,在弹出的对话框中选择“Maven Project”,如下图所示。
Eclipse中创建Maven Module和Maven Project及其间区别_第3张图片
点击Next,如下图所示。在此处界面,若勾选红框中的选项则会创建一个简易版的Maven项目,跳过下一张图选择archetype selection的界面;若不勾选,则会进入下一张图的界面,并必须从加载出来的列表中选择一个工程,才可进入下一步。
Eclipse中创建Maven Module和Maven Project及其间区别_第4张图片
此时需静等一会,列表便会加载出来,如下图所示。选择…。
Eclipse中创建Maven Module和Maven Project及其间区别_第5张图片
点击Next,进入如下图所示的界面。此处务必注意,最终创建出来的Project名称是下图红框中的Artifact Id中的名称,而非下图name中定义的mavenProjectPackaging选择pom,点击Finish完成项目创建,创建Maven项目时设置的属性如下图所示。
Eclipse中创建Maven Module和Maven Project及其间区别_第6张图片

Group IdArtifact Id是当前创建项目的坐标,Packaging是选择当前项目的打包类型(有pom、jar、war),如上图所示。

  • pom工程:用在父级工程或聚合工程中。用来做jar包的版本控制。
  • war工程:将会打包成war,发布在服务器上的工程。如网站或服务。
  • jar工程:将会打包成jar用作jar包使用,packaging默认类型

创建出的Maven项目及其结构,如下图所示。
在这里插入图片描述
创建出的Maven项目中的pom.xml文件,如下图所示。
Eclipse中创建Maven Module和Maven Project及其间区别_第7张图片

创建Maven Module

Eclipse中顶部导航栏点击File——New——Project,在弹出的对话框中选择“Maven Module”,如下图所示。
Eclipse中创建Maven Module和Maven Project及其间区别_第8张图片
选择Maven Module,点击Next,进入下图界面。在下图中,如果不给当前创建的Module选择一个Parent Project,无法点击Next进入一步。此时只需点击“Browse”选择对应的Parent Project即可。
Eclipse中创建Maven Module和Maven Project及其间区别_第9张图片
如果只是为了练手,可以在此处界面勾选下图红框的选项。若勾选红框中的选项则会创建一个简易版的Maven Module,跳过下一张图选择archetype selection的界面;若不勾选,则会进入下一张图的界面,并必须从加载出来的列表中选择一个工程,才可进入下一步。
Eclipse中创建Maven Module和Maven Project及其间区别_第10张图片
此时需静等一会,列表便会加载出来,如下图所示。选择…。
Eclipse中创建Maven Module和Maven Project及其间区别_第11张图片
在通过上一步后,来到如下图所示的界面,因为创建的就是Module,所以下图中的Artifact Id不可再改,只需选择当前创建的Module需要哪个Project即可——即选择下图中的Group Id即可。Packaging我看博客有提到说Module一般选择jar或war,不能选pom,此处还未学习,待确认。确认无误后点击Finish即可。
Eclipse中创建Maven Module和Maven Project及其间区别_第12张图片
创建出的Maven Module结构,如下图红框所示。红框下方的pom.xml是maven Project中的pom.xml文件。
Eclipse中创建Maven Module和Maven Project及其间区别_第13张图片
创建出的Maven Module中的pom.xml文件,如下图所示。
Eclipse中创建Maven Module和Maven Project及其间区别_第14张图片

在删除Maven Module所属的Maven Project后,Maven Module会变为一个单独的项目留存,不会一同被删除。

你可能感兴趣的:(maven,eclipse,java,project,module)