Maven聚合模式
项目的打包类型:pom、jar、war
项目中一般使用maven进行模块管理,每个模块下对应都有一个pom文件,pom文件中维护了各模块之间的依赖和继承关系。项目模块化可以将通用的部分抽离出来,方便重用;修改一部分代码不再是build整个项目,缩短了build时间;此外各模块都有自己的pom文件,结构更清晰。
使用maven进行模块划分管理,一般都会有一个父级项目,pom文件除了GAV(groupId, artifactId, version)是必须要配置的,另一个重要的属性就是packing打包类型,所有的父级项目的packing都为pom,packing默认是jar类型,如果不作配置,maven会将该项目打成jar包。作为父级项目,还有一个重要的属性,那就是modules,通过modules标签将项目的所有子项目引用进来,在build父级项目时,会根据子模块的相互依赖关系整理一个build顺序,然后依次build。
而对于各个子项目,需要在其对应的pom文件开头申明对父级项目的引用,通过GAV实现。对于子项目自己的GAV配置,GV如果不配置,则会从父级项目的配置继承过来。子模块可通过dependencies标签来添加自己的依赖,此外子类项目的packing值只能是war或者jar,前面已经说过,packing默认是jar类型。如果是需要部署的项目,则需要打包成war类型,如果只是内部调用或者是作服务使用,则推荐打包成jar类型。
--》
所以回顾我们现在的 xx项目 ,结合当中的pom.xml来看的话,
<groupId>com.pccw</groupId>
<artifactId>qdf-rest-master</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
父pom这样指定是必须的 ,packing必须为pom ;
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.pccw</groupId>
<artifactId>qdf-rest-data</artifactId>
<version>${project.version}</version>
</dependency>
<!-- <dependency>
<groupId>com.pccw</groupId>
<artifactId>qdf-rest-example</artifactId>
<version>${project.version}</version>
</dependency> -->
<dependency>
<groupId>com.pccw</groupId>
<artifactId>qdf-rest-queue</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.pccw</groupId>
<artifactId>qdfmvc</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.pccw</groupId>
<artifactId>qdf-rest-util</artifactId>
<version>${project.version}</version>
</dependency>
而且下方必须制定聚合 :
<modules>
<module>qdf-rest-data</module>
<!--<module>qdf-rest-example</module>-->
<module>qdf-rest-util</module>
<module>qdf-rest-schedule</module>
<module>qdf-rest-queue</module>
<module>qdfmvc</module>
<module>qdf-rest-report</module>
<module>qdf-rest-image</module>
<module>qdf-rest-job</module>
</modules>
再通过这种形式把 子工程都依赖进来,然后看子工程怎样的导包形式,默认的是最上面说的子工程jar包形式依赖;然后子工程把父工程这个依赖进去 :
<parent>
<groupId>com.pccw</groupId>
<artifactId>qdf-rest-master</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
--》 这样确保 子工程可以引用父工程的依赖
然后子工程还可以 <dependency>
<groupId>com.pccw</groupId>
<artifactId>qdf-rest-util</artifactId>
</dependency>
导入其他子工程 的jar包 ;
参照2里面说的 :
子工程通过再次定义可以使用 父工程的 ,并且不写version来达到跟父工程保持保本一致
子工程引入子工程也是通过依赖的方式进行,并且把子工程依赖的jar包也都引入了。
Maven聚合模式的更多相关文章
- maven 聚合工程 用spring boot 搭建 spring cloud 微服务 模块式开发项目
项目的简单介绍: 项目采用maven聚合工程 用spring boot 搭建 spring cloud的微服务 模块式开发 项目的截图: 搭建开始: 能上图 我少打字 1.首先搭建maven的聚合工程 ...
- 学习一下 SpringCloud (一)-- 从单体架构到微服务架构、代码拆分(maven 聚合)
一.架构演变 1.系统架构.集群.分布式系统 简单理解 (1)什么是系统架构? [什么是系统架构?] 系统架构 描述了 在应用程序内部,如何根据 业务.技术.灵活性.可扩展性.可维护性 等因素,将系统 ...
- (十四)Maven聚合与继承
1.Maven聚合 我们在平时的开发中,项目往往会被划分为好几个模块,比如common公共模块.system系统模块.log日志模块.reports统计模块.monitor监控模块等等.这时我们肯定会 ...
- 笔记:Maven 聚合和继承
聚合模块 我们希望一次构建两个或更多项目,而不是到每个模块的目录下分别执行mvn命令,Maven 聚合这一特性就是为该需求服务的, 为了使用聚合,我们必须创建一个聚合模块,通过该模块与其他项目聚合,并 ...
- idea下创建maven聚合(子父级)项目,多模块项目
IDEA下Maven多模块项目介绍和搭建 idea 创建maven聚合项目简洁教程(手把手入门,通俗易懂) 本人使用的是: intelj idea 创建聚合项目(典型web项目,包括子项目util.d ...
- maven聚合工程无法install
对于maven聚合工程,有时候执行maven命令进行mvn clean install时会出一些莫名奇妙的错误: 一直报告找不到符号,仔细看了项目源代码也不知道是什么原因.首先确保项目所在路径为英文路 ...
- maven 聚合的含义是父类打包 ,清理等 则子类自动打包;也就是一键打包 方便服务
maven 聚合的含义是父类打包 ,清理等 则子类自动打包:也就是一键打包 方便服务
- 使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化
一.创建一个空的项目作为存放整个项目的路径 1.选择 File——>new——>Project ——>Empty Project 2.WorkspaceforTest为项目存放文件夹 ...
- maven聚合工程使用如何debug
maven聚合工程在正常情况下,使用debug时会出错,因为没有源码,就不会显示代码和断点行数条. 进行如下操作: 默认情况下source下只有默认的default文件夹,点击remove进行删除(这 ...
随机推荐
- CGI的知识点
CGI(Common Gateway Interface)是能让webserver和CGI脚本共同处理客户的请求的协议. 它的协议定义文档是http://www.ietf.org/rfc/rfc387 ...
- SharePoint 2010 Pop-Up Dialogs SharePoint 2010 弹出对话框
SharePoint 2010 Pop-Up Dialogs SharePoint 2010 弹出对话框 SharePoint 2010 使得往你的站点加入对话框内容变得出乎意料的简单 ...
- 关于npm的环境变量配置、prefix
1.关于npm 的 prefix 在npm中安装全局文件时,npm会把他安装在npm里面配置的prefix路径下,查看prefix的方法是:npm config list/npm config ls/ ...
- QT实现FTP服务器(一)
QListenSocket类的实现: #include "QListenSocket.h" #include <QTcpSocket> #include <QDe ...
- bzoj3957: [WF2011]To Add or to Multiply
gay队牛逼! 我们可以强行拆一下柿子,最终得到的值会是m^k*x+m^k*u(k)*a+m^k-1*u(k-1)*a……m^0*u(0)*a 其中u表示后面有i个m的a有多少个 答案就是k+∑u 枚 ...
- linux初级学习笔记三:linux操作系统及常用命令,及如何复制和移动文件!(视频序号:02_4)
本节学习的命令:cp,mv,install,du,read 本节学习的技能:文件的移动与复制 cp( copy):复制和移动文件 cp SRC DEST -r:递归复制一个目录及其目录中的所有文件 - ...
- codevs1258关路灯
传送门 1258 关路灯 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 多瑞卡得到了一份有趣而高薪的工作.每天早晨他 ...
- mysql导出 数据库字典
USE information_schema; --切记这里不能忘掉 SELECT T.TABLE_SCHEMA AS '数据库名称', T.TABLE_NAME AS '表名', T.TABLE_T ...
- this关键字使用
原文地址:https://www.cnblogs.com/alsf/p/5515996.html 一,表示类中属性 1,没有使用this的情况 class Person{ // 定义Person类 p ...
- HDFS之二:HDFS文件系统JavaAPI接口
HDFS是存取数据的分布式文件系统,HDFS文件操作常有两种方式,一种是命令行方式,即Hadoop提供了一套与Linux文件命令类似的命令行工具.HDFS操作之一:hdfs命令行操作 另一种是Java ...