Eclipse下Maven工程多模块继承和聚合的创建

简介:

使用Maven对项目进行管理的时候,多模块的继承和聚合是必不可少的,本文简要说明一下在eclipse IDE下创建多模块工程。


    1.Maven多模块的聚合


      wKioL1Sc1AujsKKSAAChHDN3Azg136.jpg

 

    一个Maven工程下创建多个模块,然后用一个专门管理模块来将实际应用到的模块组织起来。


   2.Maven多模块的继承

        wKiom1Sc1EzQiS_gAADewbZUzho728.jpg

    子模块通过继承父模块,来获的父模块中的pom.xml配置信息。


   3.Maven多模块的继承+聚合


        wKioL1Sc1YLiIccuAAD7NveN3s8560.jpg

      上图是将1和2组合起来,可以将父模块作为聚合模块和父模块,这样父模块就可以聚合(组织)其子模块,子模块可以继承父模块。


   4.聚合和继承的关系

       区别 

  • 对于聚合模块来说,它知道有哪些被聚合的模块,但被聚合模块相互独立。

  • 对于继承关系的父POM来说,它不知道有哪些子模块继承它,但那些子模块都必须知道自己的父POM。

     共同点 :

  • 聚合 POM与继承关系中的父POM的packaging都是pom。

  • 聚合模块与继承关系中的父模块除了POM之外都没有实际的内容。

   

  5.使用Eclipse来搭建一个集成聚合和继承的工程


  5.1创建一个Maven工程,其作为聚合模块

     

1
2
3
4
5
6
7
< groupId >secondriver</ groupId >
     < artifactId >code-parent</ artifactId >
     < version >0.0.1-SNAPSHOT</ version >
     < packaging >pom</ packaging >
 
     < name >code-parent</ name >
     < url >http://maven.apache.org</ url >

  5.2创建JavaSE的Maven模块(code-utils,图中为code-utilss),并选择上面code-parent工程作为父工程.   

  wKiom1Sc4v6RIrDwAAD-lGR9cPQ334.jpg

  5.3同上,创建JavaWeb的Maven模块(code-web),并选择上面的code-parent工程作为符工程。

  5.4 Eclipse中的目录结构图

 wKiom1Sc48bBvuO5AAF7TMkWmSI279.jpg


    途中有三个工程,准确的说code-parent是maven工程,code-utils,code-web是code-parent工程下的两个模块;code-parent对其进行了聚合,code-utils,code-web继承了code-parent.

   

    本地文件系统的目录结构:

    

wKioL1Sc5pmBkeeaAACB9VYDC3E069.jpgwKiom1Sc5evDZCXEAAB-YKNGIHg717.jpg

    code-parent下的pom文件即为父pom.xml,code-utils和code-web下的pom.xml继承该pom.xml.

    


 5.5 code-parent的pom.xml

    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
< 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 >secondriver</ groupId >
     < artifactId >code-parent</ artifactId >
     < version >0.0.1-SNAPSHOT</ version >
     < packaging >pom</ packaging >
 
     < name >code-parent</ name >
     < url >http://maven.apache.org</ url >
 
     < modules >
         < module >code-utils</ module >
         < module >code-web</ module >
     </ modules >
 
     < properties >
         < project.build.sourceEncoding >UTF-8</ project.build.sourceEncoding >
         < project.reporting.outputEncoding >UTF-8</ project.reporting.outputEncoding >
         < junit.version >4.10</ junit.version >
     </ properties >
 
     < description >
         这是父模块,对子模块进行了集成,子模块对该模块进行了继承。主要作用是对公共配置的统一管理
     </ description >
 
     < dependencies >
         < dependency >
             < groupId >junit</ groupId >
             < artifactId >junit</ artifactId >
             < version >${junit.version}</ version >
             < scope >test</ scope >
         </ dependency >
     </ dependencies >
 
     < dependencyManagement >
         < dependencies ></ dependencies >
     </ dependencyManagement >
 
</ project >


    配置中packaging的值是pom,说明code-parent是一个聚合模块或者父模块,这里其属于两者。modules下配置了两个模块分别就是code-utils和code-web.


5.6code-utils和code-web的pom.xml

  • code-parent/code-utils/pom.xml

   

1
2
3
4
5
6
7
8
9
10
11
12
< 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 >
         < groupId >secondriver</ groupId >
         < artifactId >code-parent</ artifactId >
         < version >0.0.1-SNAPSHOT</ version >
     </ parent >
     < artifactId >code-utils</ artifactId >
     < name >code-utils</ name >
 
</ project >

      配置中默认的packaging的值为jar。


  • code-parent/code-web/pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<? 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 >secondriver</ groupId >
         < artifactId >code-parent</ artifactId >
         < version >0.0.1-SNAPSHOT</ version >
     </ parent >
 
     < artifactId >code-web</ artifactId >
     < packaging >war</ packaging >
     < name >code-web Maven Webapp</ name >
     < url >http://maven.apache.org</ url >
 
     < build >
         < finalName >code-web</ finalName >
     </ build >
</ project >


  至此通过Eclipse创建多模块的Maven工程已完成。至于pom.xml如何配置,就另当别论了,关于maven的pom.xm



本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/1596192,如需转载请自行联系原作者

相关文章
|
Java 应用服务中间件 Apache
Maven程序 tomcat插件安装与web工程启动
Maven程序 tomcat插件安装与web工程启动
501 0
|
Java Maven Android开发
eclipse创建maven项目
本文介绍了在Eclipse中创建Maven项目的步骤,包括打开Eclipse、选择Java项目、完成项目创建以及自动下载插件的过程。
506 2
eclipse创建maven项目
|
XML Java Maven
"Maven项目模块化大揭秘!掌握Model间最佳继承设计,让你的代码优雅如诗,项目维护不再愁!"
【8月更文挑战第11天】Maven是Java项目中常用的构建工具,其模块化特性对大型项目的管理至关重要。本文介绍Maven中的继承与聚合机制,指导如何通过继承消除重复配置,以及如何通过聚合统一构建多个模块。遵循单一职责原则,文章建议按功能划分模块,并提供了父POM与子POM的配置示例。此外,还讨论了适度模块化、依赖管理的原则,帮助提升项目的可维护性和扩展性。
374 4
|
Java Maven
maven 工程pom依赖优化及常用命令
maven 工程pom依赖优化及常用命令
543 0
|
SpringCloudAlibaba Java Maven
关于拆分boot工程的踩坑之maven多模块间的依赖关系处理
关于拆分boot工程的踩坑之maven多模块间的依赖关系处理
|
Java Maven Android开发
杨校老师课堂基于SSM整合之用户登录案例【Eclipse - Maven版】2
杨校老师课堂基于SSM整合之用户登录案例【Eclipse - Maven版】
248 0
|
Java 区块链 Maven
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
822 3
|
11月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
553 0
|
Java 测试技术 项目管理
【JavaEE】从 0 到 1 掌握 Maven 构建 Java 项目核心技巧 解锁 Java 项目高效管理实用实例
本文从Maven基础概念讲起,涵盖安装配置、核心概念(如POM与依赖管理)及优化技巧。结合Java Web项目实例,演示如何用Maven构建和管理项目,解决常见问题,助你高效掌握这一强大工具,提升Java开发与项目管理能力。适合初学者及进阶开发者学习。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
482 6

推荐镜像

更多