Maven多项目继承:dependencyManagement scope=import
maven的多项目结构中,可以使用parent定义起父项目,从而从父项目中继承依赖等属性。但是美中不足,maven只能单继承,即一个项目只能使用parent标签定一个父级项目。
maven2.9之后的版本引入了一个新的功能,可以实现依赖上的多继承。这个功能,可以将依赖配置复杂的pom文件拆分成多个独立的pom文件,一是可以使maven的pom配置更加简洁,
另一个是,可以复用这些pom依赖。
这一点可以参考springboot的maven配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.3.RELEASE</version>
</dependency>
如上面这一行依赖就可以构建一个完整的springbootweb项目,实际上这行依赖简介包含了许多个依赖,如spring核心的几大依赖包等等。而springboot能做到这一点就是利用了这个新功能。
接下来说如何使用这个新功能:
1. 首先需要单独编辑一个pom文件,定义需要的依赖,作为可被直接引用的依赖:
<?xml version="1.0" encoding="UTF-8"?>
<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.xuzimian.global.demo</groupId>
<artifactId>spring-core</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version> <properties>
<spring.version>4.3.9.RELEASE</spring.version>
</properties> <dependencyManagement>
<dependencies>
<!-- 添加Spring依赖的jar包-->
<!--依赖注入包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<!--切片包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Beans包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 容器包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 容器依赖包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 核心包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 表达式包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
注意:依赖只能放在dependencyManagement中,如果需要被多继承的话。
2. 在需要引用的项目pom文件中,加入对上面的pom引用:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.xuzimian.global.demo</groupId>
<artifactId>spring-core</artifactId>
<version>1.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
注意:scope必须是import
3. 将第一步中的单独pom文件,存放到本地或者远程maven仓库的对应目录下:

注意:该pom文件的命名必须符合{artifactId}.{version}.pom 格式,如果本地或者远程仓库上没有这个对应的pom文件,则执行mvn命令时就会出现如下错误:
Non-resolvable import POM: Could not transfer artifact
经过上面1,3两步之后,就可以在任何项目里面使用
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.xuzimian.global.demo</groupId>
<artifactId>spring-core</artifactId>
<version>1.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
这一段配置引入第一步的独立pom文件的所有spring依赖了,当然,也可以配置多个独立的pom,在项目中使用多个继承依赖。
Maven多项目继承:dependencyManagement scope=import的更多相关文章
- 剑指架构师系列-持续集成之Maven实现项目的编译、发布和部署
Maven组织项目进行编译.部署 Maven项目基本的结构说明如下: mazhi // 控制所有荐的编译.部署.发布 mazhi-app-parent // 项目的父项目,有一些公共的设置可以被子 ...
- Maven pom文件中dependency scope用法
在Maven中依赖的域有:compile.provided.runtime.system.test.import 一.compile(默认) 当依赖的scope为compile的时候,那么当前这个依赖 ...
- Mybatis与Spring整合,使用了maven管理项目,作为初学者觉得不错,转载下来
转载自:http://www.cnblogs.com/xdp-gacl/p/4271627.html 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: mvn archetype ...
- 【maven + hibernate(注解) +spring +springMVC】 使用maven搭建项目
研究,百度,查资料+好友帮助,使用MyEcplise2015工具,通过maven搭建hibernate+springMVC+spring的项目,数据库采用MySql5.5 不过使用的版本会在项目搭建过 ...
- Maven——聚合与继承
原文:http://www.cnblogs.com/xdp-gacl/p/4058008.html 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 ...
- Maven学习-项目对象模型
POM包含了四类描述和配置: 项目总体信息:它包含了一个项目的名称,项目的URL,发起组织,以及项目的开发者贡献者列表和许可证. 构建设置:在这一部分,我们自定义Maven构建的默认行为.我们可以更改 ...
- 笔记:Maven 聚合和继承
聚合模块 我们希望一次构建两个或更多项目,而不是到每个模块的目录下分别执行mvn命令,Maven 聚合这一特性就是为该需求服务的, 为了使用聚合,我们必须创建一个聚合模块,通过该模块与其他项目聚合,并 ...
- 栈长这里是生成了一个 Maven 示例项目。
Spring Cloud 的注册中心可以由 Eureka.Consul.Zookeeper.ETCD 等来实现,这里推荐使用 Spring Cloud Eureka 来实现注册中心,它基于 Netfl ...
- 在Eclipse中使用Struts和Hibernate框架搭建Maven Web项目
前言 学习使用Java还是2012年的事情,刚开始学习的Java的时候,使用的是MyEclipse工具和SSH框架.初学者适合使用MyEclipse,因为他将struts.Spring和Hiberna ...
随机推荐
- jar包自动化部署---jenkins
B.Application Server SVN账号:svn://192.168.1.49/svn/keenyoda-trunk/xxxxxcht=xxxxx 安装jenkins:安装目录:/usr/ ...
- IP通信基础课堂笔记----第二章(重点)
TCP报文及传输 TCP报文主要学习的内容包括,报文格式.连接管理.流量控制.差错控制. TCP报文是由报文头部和数据两个部分组成.占20字节的报文头部包括源端口.位目的端口.序号..确认号.首部长度 ...
- GoGland 快捷键说明
关于Gogland一些常用快捷键的说明,我在网上没有搜索到,于是乎,我找到了官网中的视频介绍,然后将其中的一部分摘录了出来,希望能帮住大家... Gogland——使用说明前面是苹果|后面是linux ...
- Can DBC 文件翻译,不是很标准,凑合看还可以
1 引言 DBC文件描述单个CAN网络的通信.这个信息足以监测和分析网络并模拟不是物理可用的节点(剩余的总线模拟). DBC文件也可以用来开发电子控制单元的通信软件,该控制单元应该是CAN网络的一部分 ...
- C# 比较和排序(IComparable和IComparer以及它们的泛型实现)
准备工作: 1.创建实体类:ClassInfo,默认想要对其按照班级学生数量进行排序 public class ClassInfo { /// <summary> /// 班级名称 // ...
- 删除csdn上面自己上传的资源
今天想删掉以前的资源,才发现CSDN并没有提供删除资源的功能,然后去网上搜了下,这才删除了,不知道怎么删除的小伙伴看过来~ 首先,找到自己要删除资源的页面,举个栗子 https://download. ...
- Tomcat 加腾讯云 实现二级域名访问
搬家这个时间段不能用,从原网站https://blog.csdn.net/qq_36570464/article/details/86157394 截图过来的.也是自己写的. Tomcat 加腾讯云实 ...
- vue 用户停留页面超过30分钟未操作 强制退出到登录页面
先说下主要实现思路,通过给你的根节点绑定mouseover事件,首先声明下当前时间,每次滑过时记录下滑过的时间,两个时间转化成毫秒数,进行对比,如果超过30分钟,则清除token,跳转到login.h ...
- PXE自动装机
PXE自动装机 一.搭建PXE远程安装服务器 PXE自动装机需要桌面模式 假如不是桌面模式安装的PXE需要安装桌面模式软件包 yum groupinstall "Desktop" ...
- scott 本月报将收录移动Web加速技术的主要进展,欢迎读者一起完善,投稿邮箱:openweb@baidu.com
_trackPageview 功能说明 用于发送某个URL的PV统计请求,适用于统计AJAX.异步加载页面,友情链接,下载链接的流量. 代码语法 _czc.push(["_trackPage ...