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

转自:http://www.tuicool.com/articles/NnmiyiU


使用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工程,其作为聚合模块

<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

<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

<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

<?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.xml配置更多信息参见:http://maven.apache.org/pom.html#Resources


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值