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代码略 |
6.Maven聚合和继承,相关案例配置相关推荐
- Maven 聚合与继承
Maven 聚合与继承 1. 背景 在这个技术发展飞速的时代,各类用户对软件的要求越来越高,软件本身也变得越 来越复杂.因此,软件设计人员往往会采用各种方式对软件划分模块,以得到更清晰的 设计及更高的 ...
- Maven聚合和继承
Part one 我们在开发过程中,创建了2个以上的模块,每个模块都是一个独立的maven project,在开始的时候我们可以独立的编译和测试运行每个模块,但是随着项目的不断变大和复杂化,我们期望能 ...
- Maven学习总结(五)——聚合与继承
2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(五)--聚合与继承 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1. ...
- Maven详解之聚合与继承
Maven详解之聚合与继承 说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各 ...
- Maven学习总结(5)——聚合与继承
2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(五)--聚合与继承 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1. ...
- Maven(3)--聚合与继承
目录 聚合 重点: 继承 注意: 聚合与继承的关系区别 : 共同点 : Maven可继承的POM 元素 依赖管理 import依赖范围 插件管理 约定由于配置 反应堆 反应堆的构建顺序 裁剪反应堆 聚 ...
- Maven精选系列--继承与聚合
转载自 Maven精选系列--继承与聚合 继承 什么是继承,我们可以定义项目的父类项目,用于继承父项目的依赖.插件.属性等信息. <parent> <groupId>com.a ...
- maven的聚合和继承详解(2021版)
前言:日常开发中,两处常见的项目开发场景:多模块项目或者Springboot项目,都会用到Maven的聚合和继承,本篇博客就针对maven这两个技术点进行总结整理,希望能对你有所帮助! 在进入正题之前 ...
- Maven之聚合与继承
Maven之坐标和依赖_jerry_dyy的博客-CSDN博客 Maven之仓库_jerry_dyy的博客-CSDN博客 Maven之聚合与继承_jerry_dyy的博客-CSDN博客 Maven之生 ...
最新文章
- python用户注册(基于django)
- tensorflow 使用
- 用WinEdt打开.tex文件显示error reading错误
- MemCache在win7上的可视化配置以及Nodejs/Net应用
- MassTransit Get Started-
- python模块使用相对路径还是绝对路径、哪种更好_python学习的第十八天模块之包、相对搜索路径和绝对搜索路径...
- Math: Fibonacci
- oracle subset-superset pairs,Oracle 字符集
- PTA:6-8 数组元素的区间删除 (20 分)
- 天猫旺铺装修的一些特殊代码 【持续收集中...】
- Kindeditor富文本使用
- 主力用计算机吸筹,主力底部吸筹 副图
- 青龙面板 企业微信应用推送
- 2020-02-08
- 34、CSS高频前端面试题之CSS基础
- Windows10安装Photoshop CC2018(PS)软件时关闭电脑防火墙
- pandas || df.dropna() 缺失值删除
- Java实现TCP的长短链接
- android 中怎么实现点击了对话框的按钮以后对话框不会消失,android 中怎么实现点击了对话框的按钮以后对话框不会消失...
- 视频弹幕技术 php,HTML5实现视频弹幕功能
热门文章
- 爬虫实战:使用Selenium爬取京东宝贝信息
- Java8 EnumMap 源码分析
- wxWidgets:操作档案manipulate archives的示例应用程序
- boost::polymorphic_get相关的测试程序
- boost::detail::sp_typeinfo_相关的测试程序
- boost::math::owens_t用法的测试程序
- boost::hana::minus用法的测试程序
- boost::edge_list用法的测试程序
- boost::endian模块宏BOOST_SCOPED_ENUM的测试程序
- GDCM:gdcm::PDFCodec的测试程序