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-08-01 22:27:28

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

maven聚合与继承笔记

maven聚合 聚合的目的是为了快速构建项目,当我们有几个maven模块,想要一次性构建,而不是到每个模块下面去执行maven命令,这时候就需要使用maven聚合(或者称为多模块). 使用聚合的时候,我们需要新建一个maven项目,由它来控制构建其他的项目,其pom.xml配置与其他普通maven项目的区别主要在以下两个地方: 打包类型(packaging)必须为pom 需要在其中添加modules标签,在其中使用module标签包括需要同时构建的maven模块的名称路径,路径为相对于此pom.

Maven - 聚合与继承

1.聚合(aggregator) 所谓聚合,顾名思义.就是把多个模块或项目聚合到一起. 我们能够建立一个专门负责聚合工作的Maven project -  aggregator. 建立该project的时候.我们要注意下面几点: 1.该aggregator本身也做为一个Maven项目,它必须有自己的POM 2.它的打包方式必须为: packaging 3.引入了新的元素:modules---module 4.版本号:聚合模块的版本号和被聚合模块版本号一致 5.relative path:每一个m

maven聚合与继承

注意:聚合或继承的父工程必须打包为pom 定义: 聚合:将多个子模块聚合到一个父工程中(仅包含一个pom.xml) 继承:多个子模块可以继承自一个父工程(仅包含一个pom.xml) 作用: 聚合:方便统一管理,统一对父工程使用maven命令,所有子模块也会执行 继承:方便所有模块jar包版本的管理 相关代码: 聚合: <modules> <module>../user-dao</module> <module>../user-service</modu

maven聚合和继承

上一篇文章学习了maven的依赖关系,并且使用maven和hibernate结合起来实现了一个简单的demo,可以看出使用maven来管理项目还是很方便的,再也不用手动的找需要的jar文件了,只需要手动的配置即可,可是大家有没有发现一个问题. 上一篇我们创建了两个工程,"user-core","user-dao",但是在编译打包的时候是分别进行操作的,那么如果我有很多工程,每个工程单独来进行编译打包等操作是很麻烦的,不过可以使用maven的聚合技术进行简单的配置就可

Maven百科 - 项目构建中的聚合与继承

在笔者细心研究之前,对这这两者的概念虽有所理解,但在实际操作过程中往往只是知其然不知其所以然,因为他们的配置方式都是在一个 主POM 或者说父POM里面做相关的配置,不知道的可能很容易混淆. 接下来笔者做个清晰的介绍吧, 聚合 所谓聚合,其实就是多模块构建.面对较为复杂的项目,通常都会被分为很多相互依赖的模块,而这些模块是独立构建,maven为了应付这种类似的需求,设置了聚合方式. 使用聚合方式,需要组建一个主模块或者说聚合模块,它是用来管理组织那些小模块.这个聚合模块本身是不用构建的, 它只需

maven 依赖、聚合和继承 (转)

Maven 插件和仓库 Maven 本质上是一个插件框架,它的核心并不执行任何具体的构建任务,仅仅定义了抽象的生命周期,所有这些任务都交给插件来完成的.每个插件都能完成至少一个任务,每个任务即是一个功能,将这些功能应用在构建过程的不同生命周期中.这样既能保证拿来即用,又能保证 maven 本身的繁杂和冗余. 将生命周期的阶段与插件目标相互绑定,就可以在特定的阶段完成具体的构建任务.例如清单 2 中的代码就是要在 validate 这个阶段执行 maven-antrun-plugin 的 run

Maven聚合模块与继承和Maven的生命周期

端碗吹水 Maven聚合模块: 因为Maven是提倡模块化编程的,所以会以多个工程分为多个模块.如果所有的功能.模块都写在一个工程里的话,不方便于扩展.升级.修改.查看和团队开发,而且也不方便于模块的复用. Maven则是提倡将一个项目拆分成多个工程,每个工程完成一个模块或功能,这些工程就像零件一般,分别去进行开发,分为多个工程也方便于维护和分工合作. 每个工程模块可以通过pom配置文件实现串联,例如配置好pom文件之后,A工程可以直接对B工程的代码进行调用,C工程可以对A和B工程的代码进行调用

Maven学习总结(五)——聚合与继承

一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 1 <modules> 2 <module>模块一</module> 3 <module>模块二</module> 4 <module>模块三</module> 5 </modules> 例如:对项目的Hello.HelloFriend.MakeFriends这三个模块进行聚合 1 <modules>

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

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