Maven实战(六)--子模块的聚合和继承

1.聚合和继承的概念

聚合:将多个项目放到一起运行

新建父项目,在pom.xml中添加

    <modules>
        <module>SIP-utils</module>
        <module>SIP-web</module>
        <module>SIP-sql</module>
        <module>SIP-core</module>
    </modules>

这些就是被聚合的项目,这样mvn clean install这个pro的时候同时会将上面项目打包

继承:比如过个项目都用到junit,那么可以向java一样创建一个jutint父类

那么我们就可以在项目中继承一个父项目,在pom.xml进行如下配置

    <parent>
        <groupId>com.learnPro</groupId>
        <artifactId>SIP-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

之后在父模块的pom中加入junit

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

可以看到子模块项目会导入相应的jar包,父模块中的依赖会被子模块继承

2.通过命令行构建子模块

比如我们需要构建的模块结构如下:

2.1 构建父模块pro-parent

mvn org.apache.maven.plugins:maven-archetype-plugin:2.2:create -DgroupId=com.learnpro -DartifactId=pro-parent 
-DarchetypeArtifactId=maven-archetype-quickstart

这边碰到过个问题,之前用如下命令,但是构建不通过

mvn archetype:create -DgroupId=com.learnpro -DartifactId=pro-parent -DarchetypeArtifactId=maven-archetype-quickstart

解决方法,请参照:http://josh-persistence.iteye.com/blog/2258213

通过上面命令可以看到我们的项目已创建成功
这个时候,我们可以将src文件夹删除(因为这个父项目只是个容器,不需要任何代码)
修改pom.xml文件,将jar修改为pom,pom表示它是一个被继承的模块,修改后的内容如下

<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>com.learnpro</groupId>
  <artifactId>pro-parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging><!--从jar改为pom-->

  <name>pro-parent</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

2.2 构建子模块dao

在之前的文件夹中运行如下命令

cd pro-parent

mvn org.apache.maven.plugins:maven-archetype-plugin:2.2:create -DartifactId=pro-dao -DarchetypeArtifactId=maven-archetype-quickstart

编译成功后,在pro-parent的pom.xml中会自动增加如下内容

  <modules>
    <module>pro-dao</module>
  </modules>

让我们再来看看pro-dao的pom文件

<?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>com.learnpro</groupId>
    <artifactId>pro-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <groupId>com.learnpro</groupId>
  <artifactId>pro-dao</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>pro-dao</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

这里,它自动会添加<parent>,我们需要把<groupId>com.learnpro</groupId>和<version>1.0-SNAPSHOT</version>去掉,并加上<packaging>jar</packaging>因为我们已经有一个父模块了groupId和version会继承父模块中的groupId和version,最后将packaging打包方式设置为jar

3.eclipse插件构建项目

3.1 构建父项目

右键->new->other->搜索maven,选择Maven Project

这里写图片描述
这里写图片描述

3.2 构建子模块

右键->new->other->搜索maven,选择Maven Module

这里写图片描述

这时候next,然后选择Maven项目模型,就可以创建对应的子模块
同时,我们可以发现pro-parent的pom文件中也增加了如下内容

  <modules>
    <module>pro-children</module>
  </modules>

这时候,我们也需要把<groupId>com.learnpro</groupId>和<version>1.0-SNAPSHOT</version>去掉,并加上<packaging>jar</packaging>

3.3 导入Maven项目

右键->Import->搜索maven,选择Existing Maven Project

选我们之前搭建的pro-parent

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值