Maven - 聚合与继承

1.聚合(aggregator)

所谓聚合,顾名思义。就是把多个模块或项目聚合到一起。

我们能够建立一个专门负责聚合工作的Maven project -  aggregator。

建立该project的时候。我们要注意下面几点:

1.该aggregator本身也做为一个Maven项目,它必须有自己的POM

2.它的打包方式必须为: packaging

3.引入了新的元素:modules---module

4.版本号:聚合模块的版本号和被聚合模块版本号一致

5.relative path:每一个module的值都是一个当前POM的相对文件夹

6.文件夹名称:为了方便的高速定位内容。模块所处的文件夹应当与其artifactId一致(Maven约定而不是硬性要求),总之。模块所处的文件夹必须和<module>模块所处的文件夹</module>相一致。

7.习惯约定:为了方便构建,通常将聚合模块放在项目文件夹层的最顶层,其他聚合模块作为子文件夹存在。这样当我们打开项目的时候。第一个看到的就是聚合模块的POM

8.聚合模块降低的内容:聚合模块的内容不过一个pom.xml文件,它不包括src/main/java、src/test/java等文件夹,由于它不过用来帮助其他模块构建的工具。本身并没有实质的内容。

9.聚合模块和子模块的文件夹:他们能够是父子类,也能够是平行结构,当然假设使用平行结构,那么聚合模块的POM也须要做出对应的更改。

2.继承

继承就是避免反复

多个模块可能依赖同样的元素,比方说每一个模块都须要Junit,使用spring的时候,其核心jar也必须都被引入

在编译的时候,maven-compiler-plugin插件也要被引入

怎样配置继承:

1.说到继承肯定是一个父子结构,那么我们在aggregator中来创建一个parent project

2.<packaging>: 作为父模块的POM,其打包类型也必须为POM

3.结构:父模块仅仅是为了帮助我们消除反复,所以它也不须要src/main/java、src/test/java等文件夹

4.新的元素:<parent> , 它是被用在子模块中的

5.<parent>元素的属性:<relativePath>: 表示父模块POM的相对路径。在构建的时候。Maven会先依据relativePath检查父POM,假设找不到,再从本地仓库查找

6.relativePath的默认值: ../pom.xml

7.子模块省略groupId和version: 使用了继承的子模块中能够不声明groupId和version, 子模块将隐式的继承父模块的这两个元素

可被继承的POM元素

groupId:项目组ID,项目坐标的核心元素

version: 项目版本号, 项目坐标的核心元素

description: 项目的描写叙述信息

organization: 项目的组织信息

inceptionYear: 项目的创始年份

url: 项目的URL地址

developers: 项目开发人员信息

contributors: 项目的贡献者信息

distributionManagement: 项目的部署配置

issueManagement: 项目的缺陷跟踪系统信息

ciManagement: 项目的持续集成系统信息

scm: 项目的版本号控制系统信息

mailingLists: 项目的邮件列表信息

properties: 自己定义的maven属性

dependencies: 项目的依赖配置

dependencyManagement: 项目的依赖管理配置

repositories: 项目的仓库配置

build: 包含项目的源代码文件夹配置、输出文件夹配置、插件配置、插件管理配置等

reporting: 包含项目的报告输出文件夹配置、报告插件配置等

3.maven的依赖管理

dependencies是能够被继承的。这个时候我们就想到让我们的发生了共用的依赖元素转移到parent中。这样我们又进一步的优化了配置。但是问题也随之而来,假设有一天我创建了一个新的模块,但是这个模块不须要这些parent的依赖,这时候怎样处理?

添加一个新的元素:dependencyManagement

现dependencyManagement也是可以被继承的。这恰恰满足了我们的须要。它既可以让子模块继承到父模块的依赖配置,又能保证子模块依赖使用的灵活性

dependencyManagement的特性:在dependencyManagement中配置的元素既不会给parent引入依赖,也不会给它的子模块引入依赖,不过它的配置是可继承的最佳实践

4.相关问题

如果你的项目使用maven构建的话,当项目要上线,部署到服务器上去的时候或许会碰见这样的问题。

问题就是,服务器上没有maven的环境,

也就是说,项目所依赖到的那些仓库(repository)中的jar包你需要单独提取出来上传到服务器中去

解决办法:

办法1:mvn package

pom.xml  :<packaging>是war的话,     mvn package 的命令将项目依赖的jar包打到web-inf 下的lib文件夹

完成后console会提示war包的位置信息

办法2:mvn assembly:assembly

在${project}/target 文件夹下发现新生成的 {artifactId}-jar-with-dependencies.jar 这个文件,命令执行的过程中,maven会将jar包所依赖的包导出,并且解压(unpackage),一并放在这个{artifactId}-jar-with-dependencies.jar包

时间: 2024-10-06 13:29:40

Maven - 聚合与继承的相关文章

maven聚合与继承笔记

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

maven聚合与继承

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

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

 1有时候一个项目中有很多个模块,要想各个模块之间影响较小,可以将每个模块拿出来作为一个项目模块,对每个项目模块进行独立的开发. 2在这些过程中会遇到关于聚合和继承的问题. 3何为聚合? A如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合,也就是说当我们点击一个pom的时候,同时运行多个项目模块.这时候要用到以下的标签,将各个项目模块整合在一起. <modules> <module>-</module> </modules> 4何为继承

maven聚合和继承

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

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

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

Java-Maven(七):Eclipse中Maven依赖、聚合、继承特性

之前通过学习了解,maven集成到eclipse中的如何创建项目,以及maven命令插件在eclipse中安装后的用法.那么接下来我们将会学习一些maven在项目中的一些特性,及如何使用. Maven依赖特性 Maven聚合特性 Maven继承特性

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用以实现一个用户注册的项目. 在本文中,也使用这个例子来讲述聚合与继承. 聚合:  由于

Maven学习总结(五)——聚合与继承【如果想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合】

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