maven多继承和继承链
来源:互联网 发布:印象笔记怎么用 知乎 编辑:程序博客网 时间:2024/06/15 16:19
需求:
一个工程需要继承多个父工程。例如:开发springboot项目时需要继承spring-boot-starter-parent,但是又想继承自定义的父工程,怎么办呢?看下面两种解决方案
方案一、子工程继承两份父工程,一份自定义父工程pom,另一份父工程pom通过dependencyManagement的方式继承
自定义父工程
<?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>org.xxx</groupId> <artifactId>xxx-parent</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <jdk15on.version>1.56</jdk15on.version> <jedis.version>2.9.0</jedis.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcpkix-jdk15on</artifactId> <version>${jdk15on.version}</version> </dependency> <!-- Redis --> <!--<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>${jedis.version}</version> </dependency>--> </dependencies> </dependencyManagement></project>
子工程
<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>org.xxx</groupId> <artifactId>xxx-rest</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org.xxx</groupId> <artifactId>xxx-parent</artifactId> <version>1.0-SNAPSHOT</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- spring-boot工程的 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> <!-- xxx-parent工程的 --> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcpkix-jdk15on</artifactId> </dependency> </dependencies></project>
刷新maven,可以看到两个父工程的依赖都可以继承。
上述自定义父工程中没有redis的依赖,如果其他子工程也需要redis,则也需要此时有两种方案:1. 只继承自定义父工程,父工程引入redis依赖,此时redis的版本就要和spring-boot-starter-parent中的redis版本一致,否则继承两个父工程的子工程的redis就会出现版本冲突;2. 同时继承spring-boot-starter-parent,这样每个子工程都需要同时继承两个父工程。
方案二、只继承自定义父工程,自定义父工程继承另一个父工程
自定义父工程
<?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>org.xxx</groupId> <artifactId>xxx-parent</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <jdk15on.version>1.56</jdk15on.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.2.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcpkix-jdk15on</artifactId> <version>${jdk15on.version}</version> </dependency> </dependencies> </dependencyManagement></project>
子工程
<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>org.xxx</groupId> <artifactId>xxx-rest</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <parent> <groupId>org.xxx</groupId> <artifactId>xxx-parent</artifactId> <version>1.0-SNAPSHOT</version> </parent> <dependencies> <!-- spring-boot工程的 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> <!-- xxx-parent工程的 --> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcpkix-jdk15on</artifactId> </dependency> </dependencies></project>
ok,大功告成。。。
阅读全文
0 0
- maven多继承和继承链
- maven多模块和继承
- Maven - 继承和聚合
- maven 聚合和继承
- Maven聚合和继承
- maven聚合和继承
- 【Maven】聚合和继承
- maven聚合和继承
- Maven聚合和继承
- Maven - 继承和聚合
- Maven:聚合和继承
- maven 聚合和继承
- Maven继承和聚合
- maven--继承和聚合
- 【maven】---聚合和继承
- 【Maven】聚合和继承
- maven 继承和聚合
- Maven聚合和继承
- bash脚本2
- nodejs一些常识
- Asp.Net公用类之验证码生成类
- 移动端页面布局
- Android内核编译、调试环境配置
- maven多继承和继承链
- [bigdata-109] spring-cloud-05 分布式服务的ribbon消费者
- warning C4819: 该文件包含不能在当前代码页(936)中表示的字符,请将该文件保存为 Unicode 格式以防止数据丢失
- python学习之——通配符%s
- Java解析xml格式数据
- TCP三次握手建立连接
- 龙珠直播前50信息爬取并保存图片和天池排名爬取
- JSP九大内置对象_重定向转发_Cookie_Session
- EtherCAT 应用层协议的部分理解(一)