static {
Enumeration<URL> resources;
try {
// 支持的版本配置(若 base jar 里面不含某版本,而经测试这个版本又没有问题,可以自定义添加文件避免 warn 日志)
resources = ClassLoader.getSystemClassLoader().getResources("supportVersion.properties");
} catch (IOException e) {
throw new RuntimeException(e);
}
StringBuilder supportVersion = new StringBuilder();
// supportVersion.properties 文件列表
while (resources.hasMoreElements()) {
InputStream inputStream;
try {
inputStream = resources.nextElement().openStream();
} catch (IOException e) {
throw new RuntimeException(e);
}
Properties prop = new Properties();
try {
// 解析为 Properties
prop.load(inputStream);
} catch (IOException e) {
throw new RuntimeException(e);
}
// 支持的 MP 版本,逗号分隔
String supportVersionTmp = (String) prop.get("mybatisPlus");
supportVersion.append(",").append(supportVersionTmp);
}
// 支持的版本列表
Set<String> supportVersionSet = Arrays.stream(supportVersion.toString().split(","))
.filter(StrUtil::isNotBlank)
.collect(Collectors.toSet());
// 当前 MP 版本
// maven jar 文件中的 META-INF/MANIFEST.MF 文件里面的 Implementation-Version
String version = ParameterUtils.class.getPackage().getImplementationVersion();
if (!supportVersionSet.contains(version)) {
log.warn("======================> Please Test MyBatisPlus Version is Adapter: {}, and Add a supportVersion.properties file key is mybatisPlus and version is you lib version <========================", version);
} else {
log.info("Mybatis Plus Version is Adapter: {}", version);
}
}