技术组件升级时,例如Fastjson升级。总是担心存在未知兼容性或其他验证不充分的问题,如何既能安心升级新版充分利用新功能,又能有快速回滚方案?
可以利用 maven profile 管理不同版本的 jar 依赖,进行无侵入 A/B 验证,实现单机房或者单分组的灰度验证。
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>own</groupId>
<artifactId>learn</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<poi.version>3.7</poi.version>
</properties>
<profiles>
<profile>
<id>pom4test</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<dependencies>
</dependencies>
</profile>
<profile>
<id>pom4Dev</id>
<activation>
<activeByDefault>true</activeByDefault><!-- 默认激活该profile节点-->
</activation>
<dependencies>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.11.4</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>19.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.5</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>
</dependencies>
</profile>
</profiles>
</project>
2. 编译打包
编译时指定 profile,多个 profile 逗号分隔
mvn -P pom4test