Maven中的继承和聚合

一. 继承和聚合

1. 什么是继承?

maven为了消除重复,把很多相同的配置提取出来, 放入一个父项目的pom.xml中

例如:grouptId,version等

2. 什么是聚合?

如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合

<modules>

<module>…</module>

</modules>

3. 继承与聚合的关系

继承主要为了消除重复

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

二. 继承聚合配置

1. 聚合配置代码:

<modules>
		<module>../Hello</module>
		<module>../HelloFriend</module>
		<module>../MakeFriends</module>
	</modules>

其中module的路径为相对路径。

2. 继承配置代码:

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>com.zdp.maven</groupId>
	<artifactId>Parent</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>
	<name>Parent</name>
	<url>http://maven.apache.org</url>

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

	<modules>
		<module>../Hello</module>
		<module>../HelloFriend</module>
		<module>../MakeFriends</module>
	</modules>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>4.9</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>com.zdp.maven</groupId>
				<artifactId>Hello</artifactId>
				<version>0.0.1-SNAPSHOT</version>
				<scope>compile</scope>
			</dependency>
			<dependency>
				<groupId>com.zdp.maven</groupId>
				<artifactId>HelloFriend</artifactId>
				<version>0.0.1-SNAPSHOT</version>
				<scope>compile</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
</project>

父模块中将用dependencyManagement进行管理

MakeFriends项目(子):

<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>
	<packaging>jar</packaging>
	<name>MakeFriends</name>

	<parent>
		<groupId>com.zdp.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>com.zdp.maven</groupId>
			<artifactId>HelloFriend</artifactId>
		</dependency>
	</dependencies>
</project>

HelloFriend项目(子):

<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>
	<packaging>jar</packaging>
	<name>HelloFriend</name>

	<parent>
		<groupId>com.zdp.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>com.zdp.maven</groupId>
			<artifactId>Hello</artifactId>
		</dependency>
	</dependencies>
</project>

Hello项目(子):

<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>Hello</artifactId>
	<packaging>jar</packaging>
	<name>Hello</name>

	<parent>
		<groupId>com.zdp.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>

Maven中的继承和聚合

时间: 2024-10-22 04:25:53

Maven中的继承和聚合的相关文章

maven中的继承和聚合的关系

maven中的继承和聚合的关系:两者的目的是不一样的,聚合的目的是能够快速的构建项目,继承的目的是减少重复配置.聚合:定义一个聚合模块,然后在pom文件中添加<module></module>标签,其中的内容是模块相对于当前模块的路径.那么在构建聚合模块的时候,在<module>中定义的模块也会跟着构建,不用逐个构建,因此加快了构建速度.继承:除了定义一个父模块,在父模块的pom文件中添加<module>标签,还要在子模块pom文件中添加<parent

maven in action(五)maven继承和聚合

问题的提出: 当一个项目依赖多个其他项目或者模块的时候,可以A模块引用了junit jar,B模块也引用了junit jar,而这个项目依赖于A.B模块,这样就没有必要重复添加junit jar坐标依赖.这时候,我们可以单独的一个项目来管理jar的坐标依赖,也就是下面要说的依赖的继承. 继承 面向对象思想中有继承,子类继承父类不是私有的方法和属性. 在maven中的继承,我们可以抽取出所有公共的jar坐标,然后建立一个parent的项目,该项目中仅包含有一个pom.xml文件,并且parent项

Maven学习笔记(七):聚合与继承

软件设计人员往往会采用各种方式对软件划分模块,以得到更清晰的设计及更高的重用性.当把Maven应用到实际项目中的时候,也需要将项目分成不同模块.Maven的聚合特性能够把项目的各个模块聚合在一起构建,而Maven的继承特性则能帮助抽取各模块相同的依赖和插件等配置,在简化POM的同时,还能促进各个模块配置的一致性. <maven实战>一书实现了两个模块account-email和account-persist用以实现一个用户注册的项目. 在本文中,也使用这个例子来讲述聚合与继承. 聚合:  由于

maven项目继承与聚合

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

maven之详解继承与聚合

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

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

使用Maven对项目进行管理的时候,多模块的继承和聚合是必不可少的,本文简要说明一下在eclipse IDE下创建多模块工程. 1.Maven多模块的聚合 一个Maven工程下创建多个模块,然后用一个专门管理模块来将实际应用到的模块组织起来. 2.Maven多模块的继承 子模块通过继承父模块,来获的父模块中的pom.xml配置信息. 3.Maven多模块的继承+聚合 上图是将1和2组合起来,可以将父模块作为聚合模块和父模块,这样父模块就可以聚合(组织)其子模块,子模块可以继承父模块. 4.聚合和

Maven的使用《二》之依赖、继承、聚合

问题?Maven的使用<二>之依赖.继承.聚合 前面已经讲到了环境的搭建(环境搭建链接),这里就不重复了.下面的主要是对依赖.继承.聚合详细说明. 这里用的编译软件是eclipse,要装maven的插件(下载地址和安装方法:点击下载链接). 然后装完后,这个时候插件已经在Preference里面了,但是插件还不能用,需要我们做一些设置. 一般来说,做到这里就可以用了.但是我在用的过程中会出现这样的一种错误(点击查看链接),经过查询资料,已经得到了很好的解决办法.做下面设置(把jir改成jdk格

pom.xml的继承、聚合与依赖

原文地址:https://my.oschina.net/zh119893/blog/232896 6.1     简介 pom.xml文件是Maven进行工作的主要配置文件.在这个文件中我们可以配置Maven项目的groupId.artifactId和version等Maven项目必须的元素:可以配置Maven项目需要使用的远程仓库:可以定义Maven项目打包的形式:可以定义Maven项目的资源依赖关系等等.对于一个最简单的pom.xml的定义必须包含modelVersion.groupId.a

Maven中的核心概念

我们最能感受到的Maven的好处应该是它的"自动化构建"与"管理依赖关系"两大功能,下面就看围绕这两大功能的Maven中的核心概念. 1.    项目目录 Maven 使用约定优于配置的原则 .它要求在没有定制之前,所有的项目都有如下的主要目录结构: 一个 maven 项目在默认情况下会产生 JAR 文件,另外 ,编译后 的 .classe文件 会放在 ${basedir}/target/classes 下面:JAR文件会放在${basedir}/target 下面