6.Maven聚合和继承,相关案例配置



1有时候一个项目中有很多个模块,要想各个模块之间影响较小,可以将每个模块拿出来作为一个项目模块,对每个项目模块进行独立的开发。

 

2在这些过程中会遇到关于聚合和继承的问题。

 

3何为聚合?

A如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合,也就是说当我们点击一个pom的时候,同时运行多个项目模块。这时候要用到以下的标签,将各个项目模块整合在一起。

<modules>

<module>…</module>

</modules>

 

4何为继承

A继承是为了消除重复,我们把很多相同的配置提取出来。(这样的好处是:统一管理jar包,方便升级)

B例如:groupId,version等。

 

5聚合与继承的关系:

A聚合主要是为了快速构建项目

B继承主要是为了消除重复。

案例(先简单概括,后全部列出):

一:聚合配置代码(注意,下面这些代码在父项目模块中)

<modules>

  <module>../Hello</module>

  <module>../HelloFriend</module>

  <module>../MakeFriends</module>

</modules>

注意:其中module的路径为相对路径。

 

二:继承配置代码(下面配置在各个子项目模块中)

<parent> 

   <groupId>cn.toto.maven</groupId>

   <artifactId>Project</artifactId>

  <version>0.0.1-SNAPSHOT</version>

   <!—相对父pom的位置,也就是说通过下面的配置找到父pom的位置-->

   <relativePath>../parent/pom.xml</relativePath>

</parent>

 

三、继承代码过程中,可以定义属性

<properties>

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

   <junit.version>4.9</junit.version>

   <maven.version>0.0.1-SNAPSHOT</maven.version>

</properties>

访问属性的方式为${junit.version},例如:

<dependency>

   <groupId>junit</groupId>

   <artifactId>junit</artifactId>

   <version>${junit.version}</version>

   <scope>test</scope>

</dependency>

 

四:在父模块中用dependencyManagement进行管理(通过下面的配置可以知道每个模块是什么,同时:这样的好处是子模块可以有选择行的继承,而不需要全部继承)

<dependencyManagement>

   <dependencies>

      <dependency>

         <groupId>junit</groupId>

         <artifactId>junit</artifactId>

         <version>${junit.version}</version>

         <scope>test</scope>

      </dependency>

      <dependency>

         
<groupId>cn.toto.maven</groupId>

         
<artifactId>HelloFriend</artifactId>

         
<version>${maven.version}</version>

         
<type>jar</type>

         
<scope>compile</scope>

      </dependency>

    </dependencies>

 </dependencyManagement>

 

 

6实际案例进行说明

模块结构:

一:父模块(Parent):

模块结构:

<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>cn.toto.maven</groupId>

 <artifactId>Parent</artifactId>

 <version>0.0.1-SNAPSHOT</version>

  <packaging>pom</packaging> <!---注意,这里要写成pom-->

 

 <name>Parent</name>

 <url>http://maven.apache.org</url>

 

<!—为实现聚合,点击这个pom.xml的时候四个同时运行--->

<modules>

     <module>../Hello</module> 

     <module>../HelloFriend</module>         

     <module>../MakeFriends</module>

     <module>../web</module>

</modules>

 

 <!—属性配置--à

 <properties>

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

 </properties>

 

 <!—对所有模块进行统一的管理-à

 <dependencyManagement>

 <dependencies>

   <dependency>

     <groupId>junit</groupId>

     <artifactId>junit</artifactId>

     <version>4.9</version>

     <scope>test</scope>

   </dependency>

   <dependency>

     <groupId>cn.itcast.maven</groupId>

       <artifactId>HelloFriend</artifactId>

     <version>0.0.1-SNAPSHOT</version>

     <scope>compile</scope>

   </dependency>

   <dependency>

                           <groupId>cn.itcast.maven</groupId>

                           <artifactId>Hello</artifactId>

                           <version>0.0.1-SNAPSHOT</version>

                           <scope>compile</scope>

                  </dependency>

                  <dependency>

                           <groupId>cn.itcast.maven</groupId>

                           <artifactId>MakeFriends</artifactId>

                           <version>0.0.1-SNAPSHOT</version>

                           <scope>compile</scope>

                  </dependency>

 </dependencies>

</dependencyManagement>

<distributionManagement>

        <repository>

           <id>releases</id>

           <name>Internal Releases</name>

           <url>http://localhost:8080/nexus-2.1.2/content/repositories/releases/</url>

        </repository>

        <snapshotRepository>

           <id>snapshots</id>

           <name>Internal Snapshots</name>

           <url>http://localhost:8080/nexus-2.1.2/content/repositories/snapshots/</url>

        </snapshotRepository>

 </distributionManagement>

 

</project>

没有其它的代码了。

 

二:Hello模块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中的pom.xml中有相关的配置-->

 <artifactId>Hello</artifactId>

 <name>Hello</name>

 

 <parent> 

         <groupId>cn.itcast.maven</groupId>

          <artifactId>Parent</artifactId>

         <version>0.0.1-SNAPSHOT</version>

       <relativePath>../Parent/pom.xml</relativePath> 

 </parent>

        <dependencies>

   <dependency>

     <groupId>junit</groupId>

     <artifactId>junit</artifactId>

   </dependency>

   </dependencies>

</project>

相关java代码略

 

三:HelloFriend(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>

 

 <artifactId>HelloFriend</artifactId>

 

 <name>HelloFriend</name>

 

        <parent> 

         <groupId>cn.toto.maven</groupId>

          <artifactId>Parent</artifactId>

         <version>0.0.1-SNAPSHOT</version>

       <relativePath>../Parent/pom.xml</relativePath> 

 </parent>

 

 <dependencies>

   <dependency>

     <groupId>junit</groupId>

     <artifactId>junit</artifactId>

   </dependency>

   <dependency>

     <groupId>cn.toto.maven</groupId>

     <artifactId>Hello</artifactId>

   </dependency>

   </dependencies>

</project>

 

MakeFriends(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>

 

 <artifactId>MakeFriends</artifactId>

 

 

 

 <name>MakeFriends</name>

 <parent> 

         <groupId>cn.itcast.maven</groupId>

          <artifactId>Parent</artifactId>

         <version>0.0.1-SNAPSHOT</version>

       <relativePath>../Parent/pom.xml</relativePath> 

 </parent>

 <dependencies>

   <dependency>

     <groupId>junit</groupId>

     <artifactId>junit</artifactId>

   </dependency>

   <dependency>

     <groupId>cn.toto.maven</groupId>

     <artifactId>HelloFriend</artifactId>

   </dependency>

   </dependencies>

</project>

相关java代码略

 

时间: 2024-11-02 03:24:49

6.Maven聚合和继承,相关案例配置的相关文章

《maven实战》学习笔记6——maven聚合和继承

maven聚合 为什么要用maven聚合 随着互联网的发展,一个项目的业务复杂度越来越高,整个项目的业务代码也会越来越庞大,因此便有了把一个项目拆分成若干个子项目的需求. 根据之前的知识,clean.test.package.install等都是针对单独的项目,那么对于上边若干个子项目可能就需要执行若干次的clean.test.package.install等操作,而这些操作具有很高的重复性. 介于这样的前提,便需要使用到maven聚合,经过一定的配置后,可以让我们每一次clean或者test或

maven 父子项目 聚合与继承 生命周期 打包插件 依赖打包 jar pom war

maven 父子关系   父项目中打包方式必须是pom  如 <packaging>pom</packaging>,父项目中使用<modules><module>msite-base</module></modules>指定子项目 子项目中使用 <parent>指定,子项目继承父项目的大部分属性 父项目 <project xmlns="http://maven.apache.org/POM/4.0.0&qu

maven pom聚合与继承

说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各类用户对软件的要求越来越高,软件本身也变得越来越复杂,然后软件设计人员开始采用各种方式进行开发,于是就有了我们的分层架构.分模块开发,来提高代码的清晰和重用.针对于这一特性,maven也给予了相应的配置. 情景分析一: 我们在开发过程中,创建了2个以上的模块,每个模块都是一个独立的maven project,在开始的时候我们可

Maven详解之聚合与继承

说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各类用户对软件的要求越来越高,软件本身也变得越来越复杂,然后软件设计人员开始采用各种方式进行开发,于是就有了我们的分层架构.分模块开发,来提高代码的清晰和重用.针对于这一特性,maven也给予了相应的配置. 情景分析一: 我们在开发过程中,创建了2个以上的模块,每个模块都是一个独立的maven project,在开始的时候我们可

Maven的下载,安装,配置,测试,初识以及Maven私服

1:Maven目录分析 bin:含有mvn运行的脚本 boot:含有plexus-classworlds类加载器框架 conf:含有settings.xml配置文件 lib:含有Maven运行时所需要的java类库 Settings.xml 中默认的用户库: ${user.home}/.m2/repository[通过maven下载的jar包都会存储到指定的个人仓库中] Maven默认仓库下载地址在: maven的lib目录下maven-model-builder-3.0.4.jar的pom.x

第6章 maven聚合特性

第6章 maven聚合特性 本章用一个例子介绍maven的聚合特性. 6.1 什么是聚合 在上一章中,我们讲解了maven的继承特性,他可以使子项目直接引用父项目定义的依赖和插件.那么,如果有多个子项目,如何通过父项目进行管理,这就需要考虑使用聚合特性.所以,maven聚合特性可以把多个项目模块聚合在一起构建. 6.2 如何使用 还是拿上章的项目来演示,首先在crm-parent中增加标签 标签中是所管理的子项目相对路径. <modules> <module>../crm-dao&

【C/C++学院】0822-类型转换函数与构造转换函数/类的继承/类的继承以及区别/继承静态成员与静态函数//继承实现代码重用/单继承QT案例/多继承简介以及实战/Gpu编程

类型转换函数与构造转换函数 #include<iostream> class fushu { public: explicit fushu(int num)//避免隐式转换,引发歧义 { x = num; y = num; } void print() { std::cout << x << "+" << y << "i" << std::endl; } operator int(); //不支

第一次接触远程调用,有没有关于阿里的dubbo相关案例,急用

问题描述 第一次接触远程调用,有没有关于阿里的dubbo相关案例,急用 网上说dubbo用的还挺多,想找一下这方面的案例文档,参考参考 解决方案 http://www.cnblogs.com/Javame/p/3632473.html 解决方案二: 可以参考下我写的:http://blog.csdn.net/evankaka/article/details/48009645

maven ssh 模块-maven ssh整合 模块开发 怎么配置applicationContext.xml

问题描述 maven ssh整合 模块开发 怎么配置applicationContext.xml 我们现在用maven 开发web项目 关于ssh框架整合时 因为是分多个模块开发 每个模块都会有一个applicationContext.xml 这么多的applicationContext.xml 中 有一个是主要的 其它的都是每个模块的具体配置 这个主要的配置文件该怎么配置 该放在哪