1.省流
打包报错:
connect error, url ${...}, driverClass com.mysql.cj.jdbc.Driver
与
java.nio.charset.MalformedInputException: Input length = 1
以及显示一堆配置文件的情况下,
检查是否是配置文件中#的注解与中文导致的。
2.介绍
本项目采用BladeX框架,项目结构是微服务,配置中心nacos。
父模块为:BladeX,子模块为mtech-farmmall、blade-flow及其他。
出现问题为:服务启动正常,打包报错。
3.记录
在mtech-farmmall下执行mvn clean package命令时报错,百度后发现模块为子模块的情况下使用mvn clean install命令。
使用mvn clean install命令后会卡住,程序一直在运行,执行到:
https://www.dcm4che.org/maven2/org/springblade/Downloading from dcm4che-repo:
mtech-farmmall-api/2.9.1.RELEASE/mtech-farmmall-api-2.9.1.RELEASE.pom
执行完成后报错:

头疼英文,看了好久发现好像没有什么有用的信息。
再百度过后,发现有说需要在父模块先进行mvn clean install操作才能在各子模块进行打包操作。
在父模块BladeX下进行mvn clean install操作,报错:
Caused by: java.sql.SQLException: connect error, url ${blade.datasource.flow.dev.url}, driverClass com.mysql.cj.jdbc.Driver
检查发现blade-flow模块报错,因此单独对blade-flow模块进行mvn clean install命令,似乎与在父模块执行命令时报的错一样:
java.sql.SQLException: connect error, url ${blade.datasource.flow.dev.url},driverClass com.mysql.cj.jdbc.Driver
org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1
而单独启动blade-flow服务时正常,检查nacos上的{blade.datasource.flow.dev.url}这段配置同样没问题。
所以根源在于如何解决blade-flow模块中mvn clean install执行后报错的问题。
查了如何解决org.yaml.snakeyaml.error.YAMLException的博客,说是去掉注释中文。

但去掉所有注释后报错没有变化。
不对,仔细检查过后发现还有swagger的配置还有中文。
swagger:
title: BladeX 接口文档系统
description: BladeX 接口文档系统
version: 2.9.1.RELEASE
再次修改后打包,blade-flow成功打包了!
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:16 min
会不会是只是swagger配置的原因?
重新将配置文件复原,单独去掉swagger配置内的中文。
打包报错了...是一样的错。
所以配置内的中文也是导致报错的一部分。
我将所有配置文件内的中文去掉,发现又报错了。
检查了之后,发现注释也可能导致报错。
在我点击确认发布前,发现nacos早就已经在提示我了,红色划出的就是报错的原因。

去掉后,重新打包,blade-flow内执行mvn clean install打包成功,在父模块BladeX执行mvn clean package打包成功。
到mtech-farmmall文件目录下查看,已经生成jar包。

总结,配置内的注解与中文可能导致打包报错。