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

来源:互联网 发布:剑灵水鸢捏脸数据 编辑:程序博客网 时间:2024/06/08 12:45

1.聚合和继承的概念

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

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

    <modules>        <module>SIP-utils</module>        <module>SIP-web</module>        <module>SIP-sql</module>        <module>SIP-core</module>    </modules>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

这些就是被聚合的项目,这样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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

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

  <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>3.8.1</version>      <scope>test</scope>    </dependency>  </dependencies>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

可以看到子模块项目会导入相应的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
  • 1
  • 2
  • 1
  • 2

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

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

解决方法,请参照: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>
  • 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
  • 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

2.2 构建子模块dao

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

cd pro-parentmvn org.apache.maven.plugins:maven-archetype-plugin:2.2:create -DartifactId=pro-dao -DarchetypeArtifactId=maven-archetype-quickstart
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

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

  <modules>    <module>pro-dao</module>  </modules>
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

让我们再来看看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>
  • 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
  • 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

这里,它自动会添加<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
  • 1
  • 1

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

3.2 构建子模块

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

这里写图片描述

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

  <modules>    <module>pro-children</module>  </modules>
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

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

3.3 导入Maven项目

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

选我们之前搭建的pro-parent

这里写图片描述

原创粉丝点击